LINUX.ORG.RU

awesome и два монитора


2

1

Как настроить awesome на двух мониторах?

У меня почти дефолтный конфиг awesome,

tags = {}
for s = 1, screen.count() do
    -- Each screen has its own tag table.
   tags[s] = awful.tag({ "Web", "Shell", "Skype", "Mail", 5, 6, 7, "Backup", "Music" }, s, layouts[1])
end
.......
-- Create a systray
mysystray = widget({ type = "systray" })

Мониторы настроены следующим образом:

#cat /etc/X11/xorg.conf.d/50-monitor.conf
Section "Monitor"
    Identifier     "Monitor1"
    VendorName     "Unknown"
    ModelName      "Acer"
Option "PreferredMode" "1280x1024"
EndSection

Section "Monitor"
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Samsung"
Option "PreferredMode" "1920x1080"
  Option     "LeftOf"   "Monitor1"
EndSection
Нужно чтобы на «Monitor0» отображались теги «Web», «Shell», «Skype», «Mail», 5, 6, «Backup», «Music», а на «Monitor1» - тег «Zabbix», и systray отображался на «Monitor0» (сейчас он только на «Monitor1». В lua увы не силен :(

★★★★★

Для тегов:

tags = {}
tags[1] = awful.tag({ "Web", "Shell", "Skype", "Mail", 5, 6, 7, "Backup", "Music" }, 1, layouts[1])
tags[2] = awful.tag({ "Zabbix"}, 2, layouts[1])

Для трея: покажите весь код, относящийся к mysystray. В том числе в rc.lua должен быть код, добавляющий mysystray на панель (wibox), менять надо его.

Либо покажите весь rc.lua.

Вообще Lua достаточно простой язык, необходимые для настройки знания можно получить просто глядя на код rc.lua)

Cheater
()
Ответ на: комментарий от Cheater

(Как временно И.О. обязанности Капитана Очевидность, замечу, что этот код является больше хаком, чем нормальной реализацией. Например, он не заработает как надо на одно- или трёх-мониторной конфигурации. В идеале надо дополнить Lua-код, чтобы он, например, определял «самый правый» экран и отправлял виджет туда, а также правильно раскидывал теги по экранам).

Cheater
()
Ответ на: комментарий от Cheater
-- Create a systray
mysystray = widget({ type = "systray" })

-- Create a wibox for each screen and add it
mywibox = {}
mypromptbox = {}
mylayoutbox = {}
mytaglist = {}
mytaglist.buttons = awful.util.table.join(
                    awful.button({ }, 1, awful.tag.viewonly),
                    awful.button({ modkey }, 1, awful.client.movetotag),
                    awful.button({ }, 3, awful.tag.viewtoggle),
                    awful.button({ modkey }, 3, awful.client.toggletag),
                    awful.button({ }, 4, awful.tag.viewnext),
                    awful.button({ }, 5, awful.tag.viewprev)
                    )
mytasklist = {}
mytasklist.buttons = awful.util.table.join(
                     awful.button({ }, 1, function (c)
                                              if c == client.focus then
                                                  c.minimized = true
                                              else
                                                  if not c:isvisible() then
                                                      awful.tag.viewonly(c:tags()[1])
                                                  end
                                                  -- This will also un-minimize
                                                  -- the client, if needed
                                                  client.focus = c
                                                  c:raise()
                                              end
                                          end),
                     awful.button({ }, 3, function ()
                                              if instance then
                                                  instance:hide()
                                                  instance = nil
                                              else
                                                  instance = awful.menu.clients({ width=250 })
                                              end
                                          end),
                     awful.button({ }, 4, function ()
                                              awful.client.focus.byidx(1)
                                              if client.focus then client.focus:raise() end
                                          end),
                     awful.button({ }, 5, function ()
                                              awful.client.focus.byidx(-1)
                                              if client.focus then client.focus:raise() end
                                          end))

for s = 1, screen.count() do
    -- Create a promptbox for each screen
    mypromptbox[s] = awful.widget.prompt({ layout = awful.widget.layout.horizontal.leftright })
    -- Create an imagebox widget which will contains an icon indicating which layout we're using.
    -- We need one layoutbox per screen.
    mylayoutbox[s] = awful.widget.layoutbox(s)
    mylayoutbox[s]:buttons(awful.util.table.join(
                           awful.button({ }, 1, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 3, function () awful.layout.inc(layouts, -1) end),
                           awful.button({ }, 4, function () awful.layout.inc(layouts, 1) end),
                           awful.button({ }, 5, function () awful.layout.inc(layouts, -1) end)))
    -- Create a taglist widget
    mytaglist[s] = awful.widget.taglist(s, awful.widget.taglist.label.all, mytaglist.buttons)

    -- Create a tasklist widget
    mytasklist[s] = awful.widget.tasklist(function(c)
                                              return awful.widget.tasklist.label.currenttags(c, s)
                                          end, mytasklist.buttons)

    -- Create the wibox
    mywibox[s] = awful.wibox({ position = "top", screen = s })
    -- Add widgets to the wibox - order matters
    mywibox[s].widgets = {
        {
            mylauncher,
            mytaglist[s],
            mypromptbox[s],
            layout = awful.widget.layout.horizontal.leftright
        },
        mylayoutbox[s],

        mytextclock,
        separator,
        spacer,

        kbdcfg.widget,
        spacer,
        separator,
        spacer,

        mycpuwidget,
        spacer,
        separator,
        spacer,

        mybattery,
        spacer,
        separator,
        spacer,

        mynetwidget,
        spacer,
        separator,
        spacer,

        -- wifi,
        -- spacer,
        -- separator,
        -- spacer,

        myweatherwidget,
        spacer,
        separator,
        spacer,
        s == 1 and mysystray or nil,
        mytasklist[s],
        layout = awful.widget.layout.horizontal.rightleft
    }
end
-- }}}

И еще. Что то не соображу тоже. как сделать, разные обоины, на два монитора, а не одну? У меня сейчас так: theme.wallpaper_cmd = { «nitrogen --set-scaled /home/amihailov/wallpaper/wallpapernt.jpg» }

Спасибо большое.

Slack ★★★★★
() автор топика
Ответ на: комментарий от Cheater

ммм, почти все заработало, только шорткаты работают, когда мышка на другом рабочем столе :)

tags = {} tags[1] = awful.tag({ «Web», «Shell», «Skype», «Mail», 5, 6, 7, «Backup», «Music» }, 2, layouts[1]) tags[2] = awful.tag({ «Zabbix»}, 1, layouts[1])

(пришлось поменять местами )

Slack ★★★★★
() автор топика
Ответ на: комментарий от Slack

Для перемещения systray на второй монитор надо заменить 1 на 2 в строке:

s == 1 and mysystray or nil,

Для обоев надо добавить новый элемент в массив wallpaper_cmd:

theme.wallpaper_cmd = { "nitrogen --set-scaled /home/amihailov/wallpaper/wallpapernt.jpg",
"nitrogen --set-scaled /path/to/wallpaper2.jpg" }
Cheater
()
22 октября 2013 г.
Ответ на: комментарий от gBopHuk

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

Slack ★★★★★
() автор топика
Ответ на: комментарий от gBopHuk
tags = {}
tags[1] = awful.tag({ "Zabbix" }, 1, layouts[1])
tags[2] = awful.tag({  "Web-(1)", "Shell-(2)", "Skype-(3)", "Mail-(4)","Asterisk-(5)", "Shell2-(6)", "Download-(7)", "Backup-(8)", "Music-(9)" }, 2, layouts[1])

По моему дело в этом куске кода было

Slack ★★★★★
() автор топика
Последнее исправление: Slack (всего исправлений: 1)
Ответ на: комментарий от Cheater

у меня всё работает хорошо, кроме панели (хочется другой вибокс на второй монитор) и обои. они выставляются только одни, причём рандомно.

funeralismatic ★★★
()
3 мая 2014 г.
Ответ на: комментарий от Cheater

А как им пользоваться? Вот как допустим мне проверить функцию screen.count()?

gBopHuk
()
Ответ на: комментарий от funeralismatic

в v3.4.15 это делается так:

if screen.count() > 1 then
mywibox[s].widgets = {
   { mylauncher, mytaglist[s], mypromptbox[s], layout = awful.widget.layout.horizontal.leftright },
     mylayoutbox[s],
     ... ,
     ... ,
     s == 2 and mysystray, spr or nil, mytasklist[s], 
     layout = awful.widget.layout.horizontal.rightleft } 
else
mywibox[s].widgets = {
   { mylauncher, mytaglist[s], mypromptbox[s], layout = awful.widget.layout.horizontal.leftright },
     mylayoutbox[s],
     ... ,
     ... ,
     s == 1 and mysystray, spr or nil, mytasklist[s], 
     layout = awful.widget.layout.horizontal.rightleft } 
end
где для ситуации, когда осом видит 2 монитора, можно указать - какие виджеты показывать, а какие нет.

science ★★☆
()
Ответ на: комментарий от funeralismatic

ааа, уже показали выше, ок, за вопрос про обои не в курсе.

science ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.