Awesome 4, + и -

Изменяем функциональность колесика мышки для смены только занятых тегов (по типу i3wm):

-- [[ MOUSE BINDINGS

root.buttons(awful.util.table.join(
    awful.button({ }, 2, client_menu_toggle_fn() ),
    awful.button({ }, 3, function () mymainmenu:toggle() end),
    --awful.button({ }, 4, awful.tag.viewprev),
    --awful.button({ }, 5, awful.tag.viewnext)
    awful.button({ }, 4, function () lain.util.tag_view_nonempty(-1) end),
    awful.button({ }, 5, function () lain.util.tag_view_nonempty(1) end)
))
Ну, вот и началось... )) Чего и следовало ожидать, исходя из многочисленных похвал Awesome WM 4.x. - Elegant DE . Пока еще с ним не разбирался. Кто заценит - отпишитесь. :)
Ага, спасибо. Утащил пару полезных вещей с того сайта:
Добавление 'size_hints_honor = false' в Rules исправляет не все. К примеру, xfce4-terminal тут же глючит и работает только во floating режиме.
Лечится установкой awesome-git из aur.
---
И чтобы не строить велосипеды с awful.tag.find_by_name и т.п. - на примере :
    -- Each screen has its own tag table.
--awful.tag({ 1, 2, 3, 4, 5 }, s, awful.layout.layouts[1])

local names = { "Ƅ", "ƀ", "Ɵ", "ƈ", "Ɗ" }
local layouts = { awful.layout.suit.tile.bottom, awful.layout.suit.tile.bottom, awful.layout.suit.tile.bottom, awful.layout.suit.spiral, awful.layout.suit.floating }
awful.tag(names, s, layouts )
awful.screen.connect_for_each_screen(function(s)
awful.tag.setnmaster(1, screen[1].tags[3])
awful.tag.setncol( 3, screen[1].tags[1])
awful.tag.setncol( 3, screen[1].tags[2])
awful.tag.setncol( 3, screen[s].tags[3])
awful.tag.seticon("/usr/share/icons/Adwaita/16x16/apps/amarok.png", screen[s].tags[3])
awful.tag.setproperty(screen[s].tags[3], "master_width_factor", 0.15)
end)
p.s. Почему-то не работает с "mwfact" :
awful.tag.setmwfact( 0.15, screen[s].tags[3])
или
awful.tag.setproperty(screen[s].tags[3], "mwfact", 0.15)
Вооот почему и lxterminal работает нормально только во floating режиме. valera_cr, ПАСИБА!

И обратите все внимание на одну строку:
awful.screen.connect_for_each_screen(function(s)
Если ее поставить не в нужном месте, то что-нибудь отвалится.
Менюшка на ПКМ по тегу
добавляем/меняем в:

local tag_menu = {
    { "Добавить тег",       function() lain.util.add_tag()     end },
    { "Переименовать тег",  function() lain.util.rename_tag()  end },
    { "Тег влево",          function() lain.util.move_tag(1)   end },
    { "Тег враво",          function() lain.util.move_tag(-1)  end },
    { "Удалить тег",        function() lain.util.delete_tag()  end }
}
taglist_buttons = awful.util.table.join(
   awful.button({ }, 3, function(t) lain.util.menu_clients_current_tags(tag_menu) end),
https://github.com/warlock90000/awesome
warlock9000, пасиба за инфу!

Там третья кнопка по умолчанию занята полезной штукой. Повесил на вторую. И чтобы той же кнопкой меню и отключалось добавил функцию, и сейчас так:


tag_menu = { theme = { width = 198, },
    { " ", },
    { "Add tag",               function() lain.util.add_tag()     end },
    { "Delete tag",            function() lain.util.delete_tag()  end },
    { "Rename tag",            function() lain.util.rename_tag()  end },
    { "Move tag to the left",  function() lain.util.move_tag(1)   end },
    { "Move tag to the right", function() lain.util.move_tag(-1)  end },
    { " ", }
}

local function tag_menu_toggle()
    local instance = nil
    return function ()
        if instance and instance.wibox.visible then
            instance:hide()
            instance = nil
        else
            instance = lain.util.menu_clients_current_tags(tag_menu)
        end
    end
end

local taglist_buttons = awful.util.table.join(
...
    awful.button({ }, 2, tag_menu_toggle () ),
...
)

И Radical не особо нужен. :)
Да, лихо вы ребята сочиняете. Спасибо, утащил.
Себе,соответственно, переделал так ( в п.п. от ув. R.V.)
--instance = lain.util.menu_clients_current_tags(tag_menu)
   instance =  awful.menu(tag_menu):show()
А то что же, нет клиентов и меню нет. Пусть уж всегда будет.
Делать было нечего, переделал индикатор обновлений
Когда есть обнова

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

При ЛКМ по иконке - откроется терминал и предложит обновить базы
При ПКМ по иконке - откроется терминал и будет идти обновление
Когда нет обнов

UPD
На идее из поста
/etc/systemd/system/pac_sync.service
[Unit]
Description=pac_sync

[Service]
ExecStart=/usr/bin/pacman -Sy
Type=simple

[Unit]
Description=Modem Manager
After=syslog.target

[Install]
WantedBy=multi-user.target
/etc/systemd/system/pac_sync.timer

[Timer]
OnBootSec=10min
OnUnitActiveSec=60min
Unit=pac_sync.service
[Install]
WantedBy=multi-user.target
Потом делаем симлинк с этих файлов в /etc/systemd/system/multi-user.target.wants
и
sudo systemctl enable pac_sync
sudo systemctl start pac_sync

pacm.sh

#!/bin/zsh

ign=`cat /etc/pacman.conf | grep -e '^Ignore'| awk ' { print $3} '`

function pack_count {
    pack_upd
    yaourt -Qqua | grep -v $ign | wc -l
}

function pack_name {
    pack_upd
    yaourt -Qqua | grep -v $ign
}

"$1"
exit


local capi = {
    mouse = mouse,
    screen = screen
}
local b = "<span color=\"#67aead\">"
local e = "</span>"
local function display()
    local lines = "<u><b>Pacman Updates:</b></u>\n"
    local cmd = [[zsh -c '~/.config/awesome/util/script/pacm.sh pack_name']]
    awful.spawn.easy_async(cmd, function(stdout)
        local s = stdout
    line = lines .. "\n" .. b .. s .. e .."\n"
    end)
    return line
end
display()

local function pack_count()
    local cmd = [[zsh -c '~/.config/awesome/util/script/pacm.sh pack_count']]
    awful.spawn.easy_async(cmd, function(stdout)
        local c = stdout
    count = c
    end)
    return count
end
helpers.newtimer(device, 180, pack_count)

pkg_upd_timer = gears.timer{ timeout = 180 }
if not pkg_upd_timer.started then
            pkg_upd_timer:start()
end

pkg_upd_count = wibox.widget.textbox()
pkg_upd_icons = wibox.widget.textbox()

pkg_upd_icons:set_markup(markup.font("PacFont Bold 11", markup(beautiful.widget_font_color, "C--- ")))
pkg_upd_icons:connect_signal('mouse::enter', function ()
      usage = naughty.notify({
      text = string.format('<span font_desc="%s">%s</span>', "Terminus Re33 Bold 13", display()),
      timeout = 2,
      hover_timeout = 0.5,
      bg = beautiful.widget_bg,
      screen = capi.mouse.screen
    })
  end)

pkg_upd_timer:connect_signal("timeout", function()
      if tonumber(pack_count()) > 0 then
        pkg_upd_count:set_markup(markup.font("Terminus Re33 Bold 13", markup(beautiful.red, pack_count())))
      else
        pkg_upd_count:set_markup(markup.font("Terminus Re33 Bold 13", markup(beautiful.widget_font_color, "OK")))
      end
      if not pkg_upd_timer.started then
        pkg_upd_timer:start()
      end
  end)
pkg_upd_icons:buttons(awful.util.table.join(
    awful.button({ }, 1, function () awful.spawn.with_shell('uxterm -geometry 90x10 -T Updating -e bash -c "sudo yaourt -Sy && pauseme"') end),
    awful.button({ }, 3, function () awful.spawn.with_shell('urxvt -T Updating -e bash -c "sudo yaourt -Sua && pauseme"') end)
))
https://github.com/warlock90000/awesome
warlock9000, выглядит интересно. :)

valera_cr, разумно. :) Только что-то у меня с Вашим вариантом instance меню то увидеть можно, но вся function tag_menu_toggle отказывается работать, хотя ошибок не выдает. А чтобы мой вариант работал и на пустых тегах нужно закомментировать строку 55 в ~/.config/awesome/lain/util/init.lua, а именно:

54    -- No clients? Then quit.
55    --if #cls_t <= 0 then return nil end

Да! С 10-ой попытки научился убирать иконки во всех менюшках. :)
Чтобы в данном меню наличие иконок в нижних пунктах и отсутствие их в верхних о не резало глаз приводим строку 50 там же к следующему виду:
50                                  } --c.icon }

А чтобы убрать совсем иконки в меню клиентов, делаем тоже самое со строкой 519 в /usr/share/awesome/lib/awful/menu.lua. В конфиге это не поменяешь. Кстати, если скопировать все библиотеки оттуда в каталог настроек пользователя и там уже редактировать, то awesome все равно будет обращаться за ними по прежнему адресу. Как бы это ему пути прописать?

P.S.: Чтобы в tag_menu внизу были видны и свернутые клиенты, можно в строке 46 ~/.config/awesome/lain/util/init.lua изменить false на true.
R.V.
valera_cr, разумно. :) Только что-то у меня с Вашим вариантом instance меню то увидеть можно, но вся function tag_menu_toggle отказывается работать, хотя ошибок не выдает.
Я тоже так подумал, попытавшись переместить первый тег вправо. Оказывается, почему-то left и right начинают работать наоборот.
Ну, мне так как-то удобнее на вид, а то с десяток открытых окон как-то уж слишком удлиняют менюшку.
 
Зарегистрироваться или войдите чтобы оставить сообщение.