Hi, My goal is to get every notification to show up on all monitors. This isn't critical; it just makes switching between standing/sitting easier.
I don't use often-updating notifications, so I (for now) don't care about the notification id's. So, I'm thinking Elv1313's solution + hiding the naughty.lua:600 error would be enough. The relevant part of my rc.lua: -- Standard awesome library local gears = require("gears") local awful = require("awful") awful.rules = require("awful.rules") require("awful.autofocus") -- Widget and layout library local wibox = require("wibox") -- Theme handling library local beautiful = require("beautiful") -- Notification library local naughty = require("naughty") naughty.notify_ = naughty.notify naughty.notify = function (args,...) for i = 1, screen.count() do args.screen = i naughty.notify_(args,...) end end local menubar = require("menubar") local revelation=require("revelation") -- {{{ 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 -- }}} The relevant part of naughty.lua (the only part changed from default): local id = naughty.notify(args).id return "u", id --local notifs = naughty.notify(args) --local id = {} --for notif in ipairs(notifs) do -- id:insert(notif.id) --end Thanks, Abe On Fri, Jun 5, 2015 at 2:22 AM, Alexis BRENON <brenon.ale...@gmail.com> wrote: > Hi Abraham, > > I'm sorry, I don't understand what and when did commented out ? > Can you please post your config file on pastebin (http://pastebin.com/) > or something like that (github?). > > To fix the error about 'insert' method, you can replace the line : > notifications:insert(i, naughty.notify_(args,...)) > by > table.insert(notifications, i, naughty.notify) > > Maybe you will have also to cheat a little bit if i doesn't start to 1... > > Maybe I can explain you a little deeper what are the goals, this way you > will be able to debug yourself. > > So, you want to have your notifications displayed on many screens (the > exact number is not important). > To do so, you have to redefine the classic naughty.notify function, to > call the initial naughty.notify function with the screen arg which loop > over all your screen. This is what is done by the code sent by Elv1313. > > Nevertheless, the initial notify function returns a table representing the > notification, containing for example an ID (the id field). If you don't > need it, so fine, stick to the Elv1313 solution and remove any > naughty.notify(...).id code in your config. > But this ID can be useful if you need to replace a notification instead of > adding a new one (this can be the case if you use notification to display > volume changement, backlight modification, battery alert, whatever). > To handle this, your new notify function must return the created > notifications, or at least their ID. > This is what my code intend to do. For each call to the initial notify > function, I put the resulting table in a 'result' table, indexed by the > index of the screen on which the notification is displayed. Up to ypu after > to use it the right way. > > The last chunk of code I sent you, handle the case where you want to use > the replaces_id argument of notify. As, in your case, you will have not > only one, but many notifications to replace (one on each screen), you will > pass the replaces_id argument as a table. This is not handled by the > initial notify function, so for the actual call you use the value at the > index representing your screen, as we do for the 'screen' arg. > > I hope the reasonning is clear. > > Alexis > > Le ven. 5 juin 2015 à 05:13, Abraham Baker <z1693...@students.niu.edu> a > écrit : > >> Hi, >> >> When I commented out 600 and 601 of naughty.lua *before* changing >> rc.lua, I got: >> naughty.lua:604: bad arg #1 to 'ipairs' (table expected, got nil) >> on both screens. >> >> Then, when I added the updated naughy.notify function to rc.lua, I got: >> rc.lua:22 attempt to call a nil value (method 'insert') >> on only one screen >> >> Ironically, the previous solution would work perfectly if it wasn't for >> the error messages (which are critical and have to be clicked away)! >> Is there a way to selectively silence the error messages related to >> naughty.lua without silencing all errors? >> >> Thanks, >> Abe >> >> >> On Thu, Jun 4, 2015 at 2:08 AM, Alexis BRENON <brenon.ale...@gmail.com> >> wrote: >> >>> Hum, well, you will have to update a little bit your config! >>> >>> First, the default naughty.notify function returns a table representing >>> the notification, but your new notify function doesn't, so update it : >>> >>> naughty.notify_ = naughty.notify >>> naughty.notify = function (args,...) >>> notifications = {} >>> for i = 1, screen.count() do >>> args.screen = i >>> notifications:insert(i, naughty.notify_(args,...)) >>> end >>> return notifications >>> end >>> >>> Then line 600 you update to something like : >>> local notifs = naughty.notify(args) >>> local id = {} >>> for notif in ipairs(notifs) do >>> id:insert(notif.id) >>> end >>> >>> Nevertheless, I think that you use the id value to replace the >>> notification, do you ? In this case, you will have to update again your >>> custom notification to handle the case if args.id is a table (instead >>> of a number) : >>> >>> naughty.notify = function (args,...) >>> notifications = {} >>> naughty_args = args >>> for i = 1, screen.count() do >>> if args.replaces_id and type(args.replaces_id) == "table" then >>> naughty_args.replaces_id = args.replaces_id[i] >>> end >>> naughty_args.screen = i >>> notifications:insert(i, naughty.notify_(args,...)) >>> end >>> return notifications >>> end >>> >>> Or something like that. >>> >>> Cheers, >>> Alexis >>> >>> Le mer. 3 juin 2015 à 22:30, Abraham Baker <z1693...@students.niu.edu> >>> a écrit : >>> >>>> That actually works, but also generates an error (in the form of a >>>> critical notification on both screens) at the same time: >>>> /usr/share/awesome/lib/naughty.lua:600: attempt to index a nil value >>>> >>>> For context, line 600 is: >>>> local id = naughty.notify(args).id >>>> >>>> Looks like this is close to working right! Thanks! >>>> >>>> On Wed, Jun 3, 2015 at 2:24 PM, Elv1313 . <elv1...@gmail.com> wrote: >>>> >>>>> This should help: >>>>> >>>>> local naughty = require('naughty') >>>>> naughty.notify_ = naughty.notify >>>>> naughty.notify = function (args,...) >>>>> for i = 1, screen.count() do >>>>> args.screen = i >>>>> naughty.notify_(args,...) >>>>> end >>>>> end >>>>> >>>>> On 3 June 2015 at 10:42, Abraham Baker <z1693...@students.niu.edu> >>>>> wrote: >>>>> > I tried adding that code right after the local naughty = >>>>> require("naughty") >>>>> > that was already there, but it didn't work and actually stopped any >>>>> > notifications from showing on any monitor. >>>>> > >>>>> > I doubt it was the cause, but some other functions in my rc.lua also >>>>> use >>>>> > local i as a counter; these shouldn't interfere with each other as >>>>> long as >>>>> > they are inside their own functions, right? >>>>> > >>>>> > Thanks, >>>>> > Abe >>>>> > >>>>> > On Wed, Jun 3, 2015 at 8:20 AM, Alexis BRENON < >>>>> brenon.ale...@gmail.com> >>>>> > wrote: >>>>> >> >>>>> >> Hi Abraham, >>>>> >> >>>>> >> you have to call the anughty.notift() function twice, once for each >>>>> >> screen. >>>>> >> Maybe you can define a function which do it for you : >>>>> >> >>>>> >> local naughty = require('naughty') >>>>> >> naughty.notify = function (args) >>>>> >> local i = 1 >>>>> >> while i <= screen.count() do >>>>> >> args.screen = i >>>>> >> naughty.notify(args) >>>>> >> end >>>>> >> end >>>>> >> >>>>> >> Or something like that >>>>> >> >>>>> >> Regards, >>>>> >> Alexis >>>>> >> >>>>> >> Le mer. 3 juin 2015 à 15:13, Abraham Baker < >>>>> z1693...@students.niu.edu> a >>>>> >> écrit : >>>>> >>> >>>>> >>> Hi, >>>>> >>> >>>>> >>> I have a standing/sitting monitor arrangement on my desk that >>>>> makes it >>>>> >>> hard to see notifications on the upper monitor while sitting and >>>>> vice versa. >>>>> >>> I've been trying to change the default naughty config so >>>>> notifications >>>>> >>> appear on both monitors at once, but so far I'm only able to just >>>>> change >>>>> >>> which monitor it shows up on (not both). >>>>> >>> >>>>> >>> Is there an easy way to have notifications shown on all monitors? >>>>> >>> >>>>> >>> Thanks, >>>>> >>> Abe Baker >>>>> > >>>>> > >>>>> >>>> >>>> >>