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

The Author's Project by Valeri N.Kravchuk
Сайт проверен Dr.Web
Меню сайта
  • Главная страница
  • Информация о сайте
  • Дневник
  • Каталог файлов
  • Обратная связь
  • Каталог сайтов
  • FAQ
  • Доска объявлений
  • Форум
  • Фотоальбом
  • Категории раздела
    Измерительная техника, инструменты [278]
    Drones, boats, cars... [99]
    Накопители данных [186]
    Гаджеты для спорта и здоровья... [166]
    Автомобильные гаджеты... [159]
    Сети, сетевые технологии, оборудование... [211]
    Гаджеты, аксессуары... [604]
    News IT, Это интересно, ликбез... [1048]
    Linux и не только [4195]
    Windows 10... [271]
    Планшеты [738]
    Нетбуки, Ноутбуки, Ультрабуки [618]
    Смартфоны, фаблеты.. [4986]
    GPS-навигаторы, трекеры... [49]
    Видеорегистраторы [195]
    mini computers и не только... [365]
    Своими руками [322]
    CB, LPD, PMR- связь... [110]
    Smart TV, UltraHD, приставки, проекторы... [404]
    Радар-детекторы [22]
    DECT, IP-телефоны [18]
    Мультиварки, блендеры и не только... [122]
    Smart Watch [225]
    Блоки питания, Power Banks, зарядки... [340]
    Sound: наушники, плееры, усилители... [568]
    Безопасность IT [478]
    Электронные книги [75]
    Роботы-пылесосы [26]
    electric cars [28]
    Фотокамеры, объективы, искусство фотографии.. [433]
    Время

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

    COMPIZOMANIA

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

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

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

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

    eXTReMe Tracker

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


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

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

    Третья часть моего поста

    В этом кусочке назначаем кнопки мыши и клавиатуры. Небольшое примечание: для Mod4 + PrntScr я назначил делать скриншот выделенной области, а на просто PtntScrn скриншот всего экрана, но второй случай не работает — не доходят руки разобраться (для скриншотов вам понадобится установить пакет xsnap


    Назначение кнопок и комбинаций
    -----------------------------------
    --- Назначения мыши ---
    -----------------------------------
    root.buttons(awful.util.table.join(
     -- Правая кнопка - вызов меню
     awful.button({ }, right_button, function() main_menu:toggle() end),
     -- Боковые кнопки - переключение тэгов по порядку
     awful.button({ }, plus_button, awful.tag.viewnext ),
     awful.button({ }, minus_button, awful.tag.viewprev )
    ))
    
    -------------------------------------------
    --- Назначения клавиатуры ---
    -------------------------------------------
    -- Глобальные назначения клавиш
    globalkeys = awful.util.table.join(
     -- Переключение рабочих столов
     awful.key( { modkey, }, key_Left, awful.tag.viewprev ),
     awful.key( { modkey, }, key_Right, awful.tag.viewnext ),
     awful.key( { modkey, }, key_Esc, awful.tag.history.restore ),
     --awful.key( { }, key_Alt_R, function () kbdcfg.switch() end),
     -- Манипуляция областями экрана (перестановка клиентов)
     awful.key( { modkey, }, key_Tab,
     function()
     awful.client.focus.history.previous()
     if client.focus then client.focus:raise() end
     end ),
     -- Запуск стандартных программ
     -- Терминал
     awful.key( { modkey, }, key_X, function() awful.util.spawn(terminal) end ),
     -- Командная строка
     awful.key( { modkey, }, key_R, function() bottom_prompt_box[mouse.screen]:run() end ),
     awful.key( { }, key_Home, function() awful.util.spawn_with_shell("google-chrome-stable") end ),
     -- Перезапуск awesome
     awful.key( { modkey, "Control" }, key_R, awesome.restart),
     awful.key( { modkey }, key_F1, function () awful.util.spawn('slimlock') end),
     awful.key( { }, key_Print,
     function () awful.util.spawn_with_shell("DATE=`date +%d%m%Y_%H%M%S`; xsnap -file $HOME/Snapshots/snap$DATE") end),
     awful.key( { modkey }, key_Print,
     function () awful.util.spawn_with_shell("DATE=`date +%d%m%Y_%H%M%S`; xsnap -nogui -file $HOME/Snapshots/snap$DATE") end),
     awful.key( { }, key_Vol_Up, function () volumecfg.up() end),
     awful.key( { }, key_Vol_Down, function () volumecfg.down() end),
     awful.key( { }, key_Mute, function () volumecfg.toggle() end)
    )
    
    ------------------------------------------------------
    --- Клиентские назначения клавиш ---
    ------------------------------------------------------
    clientkeys = awful.util.table.join(
     -- РАзвернуть на весь экран
     awful.key( { modkey, }, key_F, function(c) c.fullscreen = not c.fullscreen end ),
     -- Закрыть окно
     awful.key( { modkey, "Shift" }, key_C, function(c) c:kill() end ),
     -- Перевести окно в плавающий режим
     awful.key( { modkey, "Control" }, key_Space, awful.client.floating.toggle ),
     -- Сделать данной клиентское окно главным
     awful.key( { modkey, "Control" }, key_Return, function(c) c:swap( awful.client.getmaster() ) end ),
     -- Переместить окно на другой экран???
     awful.key( { modkey, }, key_O, awful.client.movetoscreen ),
     -- Поместить окно поверх всех
     awful.key( { modkey, }, key_T, function(c) c.ontop = not c.ontop end ),
     -- Минимизировать окно
     awful.key( { modkey, }, key_N,
     function(c)
     c.minimized = true
     end ),
     -- Максимизировать окно
     awful.key( { modkey, }, key_M,
     function(c)
     c.maximized_horizontal = not c.maximized_horizontal
     c.maximized_vertical = not c.maximized_vertical
     end )
    )
    



    Здесь определены некоторые комбинации для тегов, роли и сигналы. Например пиджин у меня открывается только на 4 теге, а в сигнала я прописываю — отображать у окон кнопку развернуть, закрыть, иконку и заголовок окна.
    Комбинации для окон, правила и сигналы
    -----------------------------------------------------------------------------------------------------------------------
    --- Переключение тэгов и операции с клиентами и тэгами на каждом из экранов ---
    -----------------------------------------------------------------------------------------------------------------------
    for i = 1, 9 do
     -- modkey + <номер тэга>
     -- Переключиться в выбранный тэг
     globalkeys = awful.util.table.join( globalkeys,
     awful.key({ modkey }, "#" .. i + 9,
     function()
     local screen = mouse.screen
     local tag = awful.tag.gettags(screen)[i]
     if tag then
     awful.tag.viewonly(tag)
     end
     end),
     -- modkey + Ctrl + <номер тэга>
     -- Совместить выбранный тэг с текущим
     awful.key({ modkey, "Control" }, "#" .. i + 9,
     function()
     local screen = mouse.screen
     local tag = awful.tag.gettags(screen)[i]
     if tag then
     awful.tag.viewtoggle(tag)
     end
     end),
     -- modkey + <номер тэга>
     -- Переместить клиент в фокусе на выбранный тэг
     awful.key({ modkey, "Shift" }, "#" .. i + 9,
     function()
     local tag = awful.tag.gettags(client.focus.screen)[i]
     if client.focus and tag then
     awful.client.movetotag(tag)
     end
     end),
     -- modkey + <номер тэга>
     -- Переместить клиент в фокусе на выбранный тэг, оставив его и в текущем тэге
     awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
     function()
     local tag = awful.tag.gettags(client.focus.screen)[i]
     if client.focus and tag then
     awful.client.toggletag(tag)
     end
     end)
     )
    end
    
    ----------------------------------------------------------------------------
    --- Назначение кнопок мыши для каждого клиента ---
    ----------------------------------------------------------------------------
    clientbuttons = awful.util.table.join(
     -- Переключить фокус
     awful.button( { }, left_button, function(c) client.focus = c; c:raise() end),
     -- Переместить
     awful.button( { modkey }, left_button, awful.mouse.client.move),
     -- Изменить размер
     awful.button( { modkey }, right_button, awful.mouse.client.resize)
     )
    
    
    -- Задать глобальные клавиши
    root.keys(globalkeys)
    
    ----------------------------------
    --- Роли приложений ---
    ----------------------------------
    awful.rules.rules = {
     { -- Главная роль для всех приложений
     rule = { },
     properties = { border_width = beautiful.border_width, -- задается толщина рамки окна
     border_color = beautiful.border_normal, -- цвет рамки окна не в фокусе
     focus = awful.client.focus.filter, -- это что не знаю :(
     keys = clientkeys, -- горячие клавиши
     buttons = clientbuttons} -- кнопки мыши
     },
     --{ rule = { class = "MPlayer" },
     -- properties = { floating = true } },
     --{ rule = { class = "pinentry" },
     -- properties = { floating = true } },
     --{ rule = { class = "Gimp" },
     -- properties = { floating = true } },
     -- Set Firefox to always map on tags number 5 of screen 1.
     --{ rule = { class = "Firefox" },
     -- properties = { tag = tags[1][5] } }
    -- "Коньки": без рамки и плавать
     {
     rule = { class = "Conky"},
     properties = { border_width = 0, floating = true }
     },
     {
     rule = { instance = "Pidgin" },
     properties = { tag = tags[1][4], floating = false, maximized_horizontal = false, maximized_vertical = false }
     },
     {
     rule = { instance = "Skype" },
     properties = { floating = true, maximized_horizontal = false, maximized_vertical = false }
     }
    }
    
    --------------------
    --- Сигналы ---
    --------------------
    client.connect_signal("manage", 
     function (c, startup)
     -- Enable sloppy focus
     c:connect_signal("mouse::enter", 
     function(c)
     if awful.layout.get(c.screen) ~= awful.layout.suit.magnifier
     and 
     awful.client.focus.filter(c) 
     then
     client.focus = c
     end
     end)
     if
     not startup 
     then
     -- Set the windows at the slave,
     -- i.e. put it at the end of others instead of setting it master.
     -- awful.client.setslave(c)
     -- Put windows in a smart way, only if they does not set an initial position.
     if
     not c.size_hints.user_position 
     and 
     not c.size_hints.program_position 
     then
     awful.placement.no_overlap(c)
     awful.placement.no_offscreen(c)
     end
     end
    end)
    
    -- У окон в фокусе
    client.connect_signal("focus",
     function(c)
     -- Раскрасить рамку соответствеено
     c.border_color = beautiful.border_focus
     -- Нарисовать заголовок окна
     -- Виджет слева от заголовка окна
     local left_layout = wibox.layout.fixed.horizontal()
     left_layout:add(awful.titlebar.widget.iconwidget(c))
     -- Виджеты в правой части заголовка окна
     local right_layout = wibox.layout.fixed.horizontal()
     --right_layout:add(kbdcfg.widget)
     right_layout:add(awful.titlebar.widget.maximizedbutton(c))
     right_layout:add(awful.titlebar.widget.closebutton(c))
     -- Заголовок окна
     local middle_layout = wibox.layout.flex.horizontal()
     local title = awful.titlebar.widget.titlewidget(c)
     title:set_align("center")
     middle_layout:add(title)
     -- Расставляем блоки виджетов по местам
     local layout = wibox.layout.align.horizontal()
     layout:set_left(left_layout)
     layout:set_right(right_layout)
     layout:set_middle(middle_layout)
     -- Добавляем их на заголовок окна
     awful.titlebar(c):set_widget(layout)
     -- Задаем размер заголовка окна
     awful.titlebar(c, {size = 18})
     end)
    client.connect_signal("unfocus",
     function(c)
     c.border_color = beautiful.border_normal
     awful.titlebar(c, {size = 18})
     end)
    



    Переключение раскладок.



    Сразу скажу, что стоит откатиться xkbcomp до версии 1.2.3, так как в 1.2.4 есть баг (при переключении раскладки, не работают кнопки мыши)

    Про раскладку вообще, можно добавить реализацию как это в gentoo wiki написанно, но тогда у нас не буду работать горячии клавиши (для системных мы указывали коды клавиш, так что это нам не страшно), а вот такие как ctrl + C и т.д. работать не будут.

    в новых версиях Xorg сервера убрали xorg.conf, теперь конфигурация лежит в другом месте. Создадим директорию
    sudo mkdir /etc/X11/xorg.conf.d

    И в ней создадим 2 файла, 01-keyboard-layout.conf и 01-enable-pointerkeys.conf
    В первом:
    Section "InputClass"
     Identifier "keyboard-layout"
     MatchIsKeyboard "on"
     Option "XkbLayout" "us,ru"
     Option "XkbOptions" "grp:ctrl_shift_toggle,terminate:ctrl_alt_bksp
    EndSection
    

    Перезапуск X сервера комбинацией ctrl + alt + backspace и смена раскладки с помощью ctrl + shift

    После смены раскладки у нас по умолчанию отключаются кнопки мыши, по этому для их включения запишем во втором (при версии xkbcomp-1.2.4 это не работает):
    Section "InputClass"
     Identifier "Keyboard Defaults"
     MatchIsKeyboard "yes"
     Option "XkbOptions" "keypad:pointerkeys"
    EndSection
    


    Теперь сделаем приятным для глаз наш urxvt, для этого отредактируем файлик ~/.Xdefaults (опять таки, если его нету — смело создаём)
    Мой ~/.Xdefaults
    !darkgray
    *background: #212121
    
    !silver
    *foreground: #C0C0C0
    
    !black
    *color0: #251f1f
    *color8: #5e5e5e
    !red
    *color1: #eb4509
    *color9: #eb4509
    !green
    *color2: #94e76b
    *color10: #95e76b
    !yellow
    *color3: #ffac18
    *color11: #ffac18
    !blue
    *color4: #46aede
    *color12: #46aede
    !magenta
    *color5: #e32c57
    *color13: #e32c57
    !cyan
    *color6: #d6dbac
    *color14: #d6dbac
    !white
    *color7: #efefef
    *color15: #efefef
    
    !save 5000 lines
    URxvt*saveLines: 5000 
    
    !left button
    URxvt.matcher.button: 1 
    
    !default brauser google chrome
    URxvt.urlLauncher: google-chrome-stable
    !underline links
    URxvt.underlineURLs: true
    ! 
    URxvt.keysym.M-u: perl:url-select:select_next
    
    !disabled button 'new tab'
    URxvt.tabbed.new-button:no
    !?
    URxvt.tabbed.tabbar-fg: 15
    !?
    URxvt.tabbed.tabbar-bg: 8
    !?
    URxvt.tabbed.tab-fg: 8
    !?
    URxvt.tabbed.tab-bg: 14
    
    Rxvt.font: -misc-fixed-medium-r-normal--15-140-75-75-c-90-iso8859-1
    URxvt.boldFont: -misc-fixed-bold-r-normal--15-140-75-75-c-90-iso8859-1
    !disable scrollbar
    URxvt*scrollBar: false 
    



    В итоге получаем приятную для глаз цветовую схему нашего терминала.

    В итоге получаем вот такую приятную и весьма удобную систему:







    Конечно я не достиг такого уровня, как unlogic и мой конфиг ещё можно совершенствовать до бесконечности, но я получил удобную и работоспособную систему.

    P.S. В emacs у меня цветовая схема monokai.
    P.P.S. Надеюсь ничего не забыл описать.

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

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

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

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