IT News: Digital Camera, OS, Laptop, Smartphone, Smart TV, Sound...

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Автомобильные гаджеты, ремонт... [143]
    Безопасность IT [404]
    Блоки питания, Power Banks, зарядки... [508]
    Видеорегистраторы [186]
    Гаджеты для спорта и здоровья... [190]
    Гаджеты, аксессуары... [627]
    Измерительная техника, инструменты [437]
    Накопители данных [232]
    Нетбуки, Ноутбуки, Ультрабуки [689]
    Мультиварки, блендеры и не только... [162]
    Планшеты [764]
    Радар-детекторы [26]
    Роботы-пылесосы [37]
    Своими руками [360]
    Сети, сетевые технологии, оборудование... [273]
    Смартфоны [4959]
    Фотокамеры, объективы, искусство фотографии.. [541]
    Умный дом [50]
    Электронные книги [101]
    CB, LPD, PMR- связь... [170]
    DECT, IP-телефоны [18]
    Drones, boats, cars... [108]
    electric cars [35]
    GPS-навигаторы, трекеры... [51]
    Linux и не только [3981]
    mini computers и не только... [409]
    News IT, Это интересно, ликбез... [1120]
    Smart TV, UltraHD, приставки, проекторы... [415]
    Smart Watch [268]
    Sound: наушники, плееры, усилители... [618]
    Windows 10... [301]
    Windows 11 [37]
    Погода

  • Метеорадар БРЕСТ
  • Погода в Бресте от www.yr.no

    Яндекс.Погода БРЕСТ

  • Интересные ссылки

    COMPIZOMANIA

    Наш опрос
    Оцените мой сайт
    Всего ответов: 1347
    Статистика
    Анализ веб сайтов

    Яндекс.Метрика

    Рейтинг@Mail.ru Яндекс цитирования

    Russian America Top. Рейтинг ресурсов Русской Америки.

    eXTReMe Tracker

    Правильный CSS!


    Онлайн всего: 176
    Гостей: 176
    Пользователей: 0
    Locations of visitors to this page
    Форма входа
    Главная » 2014 » Март » 3 » Моё знакомство с WM Awesome. Часть 1
    15:51
    Моё знакомство с WM Awesome. Часть 1

    Моё знакомство с WM Awesome. Часть 1 

    Разговор пойдёт о моём первом знакомстве с таким оконным менеджером, как Awesome. Долгое время я использовал Gnome2, потом пробовал Gnome3, решил испробовать kde, но ничего из этого не удовлетворило меня. Да, к слову, у меня Gentoo. Да, статья ориентирована на таких же как и я новичков — дабы упростить жизнь.

    В официальной ветке портажа стабильной является версия 3.4.15, но я решил поставить последнюю доступную — 3.5.2-r1, с USE флагом «dbus». В качество логин менеджера я выбрал SLiM. После сборки всех необходимых пакетов открываем /etc/conf.d/xdm и устанавливаем SLiM в качестве менеджера по умолчанию:

    DISPLAYMANAGER="slim"

    Далее необходимо сделать небольшие изменение я /etc/slim.conf

    # login_cmd exec /bin/sh - ~/.xinitrc %session
    login_cmd exec /bin/bash -login ~/.xinitrc %session
    # login_cmd exec /bin/bash -login /usr/share/slim/Xsession %session

    В этом конфиге также можете выбрать понравившуюся тему, которые лежат в /usr/share/slim/themes. Я обхожусь дефолтной. Так же там есть ещё пару интересных параметров, но я их не трогал — нет необходимости.

    Терминал я решил использовать urxvt. У меня он собран:

    rxvt USE="xgetdefaults"
    rxvt-unicode USE="256-color focused-urgency font-styles mousewheel perl startup-notification vanilla xft"

    Чтобы, собственно, запустился наш wm нужно вмести изменения в файл ~/.xinitrc (если его нету — то создать), ниже привожу свой:

    urxvtd --quiet --opendisplay --fork &
    pulseaudio --start &
    exec ck-launch-session dbus-launch awesome

    Первая строка — запускаю демон urxvt (в дальнейшем клиент вызывается urxvtc), ну, во второй понятно запускаем pulseaudio, и в последней запускаем сам awesome. Стоит отметить, что если у вас systemd, а не consolekit — то у вас вызов awesome вроде как отличается, но я не использую systemd, поэтому не берусь утверждать.

    Запускаем xdm:
    sudo /etc/init.d/xdm start

    Логинимся и наблюдаем вот такую вот картину:


    Я долго лазил по разным форумам в поисках красивых темок, конфигов, виджетов для awesome. Наткулся на такого пользователя unligic (у него много статей и интересных вещей на github)



    И более новая версия его темы:



    Меня это очень впечатлило и я решил поставить себе его тему — но это не увенчалось успехом. Тема просто не работало. При исправлении одной ошибки появлялась новая и т.д. Позже я увидел его пост, содержание примерно такое «ставить новичку не советую, так как там много костылей, потратите кучу времени и не факт, что заработает». Собственно так и получилось. Тогда я решил писать конфиг сам. Знаний в Lua у меня не было вообще, но гугл всегда помогает.

    Конфигурационный файл лежит в /etc/xdg/awesome/rc.lua — но его я трогать не советую, просто скопируем его
    cp /etc/xdg/awesome/rc.lua ~/.config/awesome/rc.lua
    (У кого-то директории .config может не оказаться, не пугайтесь — просто создайте.
    mkdir ~/.config
    mkdir ~/.config/awesome

    Начнём конфигурацию. (Да, я, пользуясь многими статьями, просто переписал его)

    Тут мы перечисляем все подключаемые библиотеки
    ---------------------------------------------
    --- Стандартные библиотеки ---
    ---------------------------------------------
    local gears = require("gears")
    local awful = require("awful")
    local vicious = require("vicious")
    awful.rules = require("awful.rules")
    require("awful.autofocus")
    local wibox = require("wibox")
    local beautiful = require("beautiful")
    local naughty = require("naughty")
    local menubar = require("menubar")
    local dbus = require("dbus")
    



    Вроде всё понятно :)
    ---------------------------------------------------------
    --- Устанавливаем системную локаль ---
    ---------------------------------------------------------
    os.setlocale("ru_RU.UTF-8")
    



    Эту часть оставляем без изменений - это обработчик ошибок
    -- {{{ Error handling
    -- Check if awesome encountered an error during startup and fell back to
    -- another config (This code will only ever execute for the fallback config)
    if awesome.startup_errors then
     naughty.notify({ preset = naughty.config.presets.critical,
     title = "Oops, there were errors during startup!",
     text = awesome.startup_errors })
    end
    
    -- Handle runtime errors after startup
    do
     local in_error = false
     awesome.connect_signal("debug::error", function (err)
     -- Make sure we don't go into an endless error loop
     if in_error then return end
     in_error = true
    
     naughty.notify({ preset = naughty.config.presets.critical,
     title = "Oops, an error happened!",
     text = err })
     in_error = false
     end)
    end
    -- }}}
    



    Я взял за основу тему zenburn (лежит в /usr/share/awesome/themes/zenburn). И решил её немного поменять под себя (практически не значительно, пока что)
    -------------------------------------
    --- Устанавливаем тему ---
    -------------------------------------
    beautiful.init("/home/worm2fed/.config/awesome/themes/worm2fed/theme.lua")
    



    Параметр -nw в последней строчке позволяет запускать emacs в терминале
    ----------------------------------------------------------------------
    --- Устанавливаем приложения по умолчанию ---
    ----------------------------------------------------------------------
    terminal = "urxvtc" -- Терминал по умолчанию
    browser = "google-chrome-stable" -- Браузер по умолчанию
    editor = os.getenv("EDITOR") or "emacs" -- Редактор по умолчанию
    editor_cmd = terminal .. " -nw" .. editor -- Команда запуска консольного редактора
    



    Отступы ужасно съехали, но в редакторе оно всё красиво. Клавиша модификатор — её ещё называет супер, клавиша с логотипом шиндоуса. Чаще всего это Mod4, но может и отличаться. И далее коды кнопок мыши и нужных в конфиге клавиш. Для проверки кодов мыши:
    xev | grep 'button'

    Для клавиши модификатора и остальных клавиш:
    xev | grep 'keycode'

    Коды кнопок и клавиш
    -----------------------------------------
    --- Клавиша-модификатор ---
    -----------------------------------------
    modkey = "Mod4"
    
    ---------------------------
    --- Кнопки мыши ---
    ---------------------------
    left_button = 1
    wheel_button = 2
    right_button = 3
    plus_button = 4 
    minus_button = 5
    wheel_left_button = 6
    wheel_write_button = 7
    
    -----------------------------------
    --- Скан-коды клавиш ---
    -----------------------------------
    key_V = "#55"
    key_Z = "#52"
    key_Y = "#29"
    key_J = "#44"
    key_K = "#45"
    key_N = "#57"
    key_M = "#58"
    key_F = "#41"
    key_R = "#27"
    key_L = "#46"
    key_C = "#54"
    key_W = "#25"
    key_X = "#53"
    key_Q = "#24"
    key_H = "#43"
    key_Tab = "#23"
    key_Tilda = "#49"
    key_U = "#30"
    key_E = "#26"
    key_T = "#28"
    key_P = "#33"
    key_O = "#32"
    key_Return = "#36"
    key_Left = "#113"
    key_Right = "#114"
    key_Esc = "#9"
    key_Print = "#107"
    key_Alt_R = "#108"
    key_Alt_L = "#64"
    key_Space = "#65"
    key_Ctrl_R = "#105"
    key_Ctrl_L = "#37"
    key_Home = "#110"
    key_F1 = "#67"
    key_Mute = "#121"
    key_Vol_Down = "#122"
    key_Vol_Up = "#123"
    



    Здесь я выбрал нужные мне разметки окон
    ------------------------------------------------------------------------------
    --- Layouts - способы расположения окон на экране ---
    -----------------------------------------------------------------------------
    local layouts =
    {
     awful.layout.suit.floating, -- 1 
     awful.layout.suit.tile, -- 2 Главное окно слева, справа второстепенные (мелкие)
     --awful.layout.suit.tile.left, -- * Слева второстепенные окна
     awful.layout.suit.tile.bottom, -- 3 Внизу второстепенные окна
     --awful.layout.suit.tile.top, -- * Второстепенные окна вверху
     awful.layout.suit.fair, -- 4
     --awful.layout.suit.fair.horizontal,
     --awful.layout.suit.spiral,
     awful.layout.suit.spiral.dwindle, -- 5
     awful.layout.suit.max, -- 6
     --awful.layout.suit.max.fullscreen,
     awful.layout.suit.magnifier -- 7
    }
    



    Тут всё ясно
    --------------------------------------
    --- Обои рабочего стола ---
    --------------------------------------
    -- Если в теме заданы обои
    if beautiful.wallpaper then
     -- Перебираем все экраны
     for s = 1, screen.count() do
     -- На каждый экран кладем обои (можно в принципе на каждый экран свои)
     gears.wallpaper.maximized(beautiful.wallpaper, s, true)
     end
    end
    



    Имена тегов могут быть абсолютно любыми — я выбрал греческие буквы — как на скрине unligic. Каждому отдельному тегу я присваиваю своё макет, которые мы определили выше.
    Тэги
    ---------------------------------------------------------
    --- Тэги - виртуальные рабочие столы ---
    ---------------------------------------------------------
    -- Список тэгов
    tags = {
     -- Имена тэгов
     names = { " α ", " β ", " ζ ", " Θ ", " Ξ ", " ς ", " ψ "},
     -- Макеты тэгов
     layout = { layouts[1], layouts[2], layouts[3], layouts[4], layouts[5],
     layouts[6], layouts[7]
    }}
    -- Перебираем все экраны
    for s = 1, screen.count() do
     -- На каждом создаем список тэгов, устанавливая макет отображения окон
     tags[s] = awful.tag(tags.names, s, tags.layout)
    end
    



    Собираем менюшку (не знаю зачем она нужна, так ни разу и не использовал)
    ------------------------------
    --- Главное меню ---
    ------------------------------
    --- Интернет-приложения
    internet_menu =
    {
     -- Формат описания пункта меню
     -- {<Назавание пункта меню>, <Команда запуска>, <Иконка>}
     {" Firefox", "firefox-bin", beautiful.firefox_icon},
     {" Chrome", "google-chrome-stable", beautiful.chrome_icon},
     {" Pidgin", "pidgin"}
    }
    --- 
    editors_menu =
    {
     {" Eclipse", "eclipse-bin-4.2"},
     {" Emacs", "emacs"}
    }
    --- 
    office_menu = {
     {" Word", "libreoffice --writer"},
     {" Exel", "libreoffice --calc"}
    }
    
    main_menu = awful.menu({
     -- Таблица пунктов главного меню
     items = {
     {" Интернет", internet_menu},
     {" Редакторы", editors_menu},
     {" LibreOffice", office_menu},
     {" "},
     {" Перезагрузка", "reboot", beautiful.reboot_icon},
     {" Выключение", "halt", beautiful.poweroff_icon},
     {" Выход", awesome.quit, beautiful.logout_icon}
     }
    })
    
    ------------------------------------------------------------------
    --- Лаунчер - та кнопка что на панели слева --- 
    ------------------------------------------------------------------
    launcher = awful.widget.launcher({ image = beautiful.gentoo_icon, menu = main_menu })
    



    А вот это так и не понял для чего
    -- Menubar configuration
    menubar.utils.terminal = terminal -- Set the terminal for applications that require it
    -- }}}
    



    Статья вышла очень большой, поэтому пришлось разбить на части...

    http://habrahabr.ru/post/214411/
    Категория: Linux и не только | Просмотров: 991 | Добавил: laptop | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк слабее льва и тигра, но в цирке волк не выступает!
    Волк - единственный из зверей, который может пойти в бой на более сильного противника.
    Если же он проиграл бой, то до последнего вздоха смотрит в глаза противника. После этого умирает...

    Праздники сегодня

    Поиск
    Календарь
    Архив записей
    Друзья сайта
  • Официальный блог
  • JEEP - the best! Mercedes - the best! Автомобильный портал города Бреста: технические характеристики с фото, авторынок, автоспорт...
    Наша кнопка
    IT новости с моего лаптопа...

    Внимание!
    Администратор сайта laptop.ucoz.ru не несет ответственности за содержание рекламных объявлений. Все используемые на сайте зарегистрированные товарные знаки принадлежат своим законным владельцам! Используемая со сторонних источников информация публикуется с обязательными ссылками на эти источники.
    Copyright Valeri N.Kravchuk © 2007-2024