Just in case anyone finds this interesting/useful:
After updating to awesome v3.5.8, I had to re-remove the .id from line 600
of naughty.lua to avoid the error I got before.

Re-removing the .id returned the notification behavior to the way it was,
which works really well!

Abe

On Fri, Jun 5, 2015 at 11:58 AM, Abraham Baker <z1693...@students.niu.edu>
wrote:

> Hi,
>
> Changing naughty.lua:600 to
> local id = naughty.notify(args) --no .id
> results in notifications on all screens + no error! Thanks!
>
> So, for clarification, my naughy.lua now looks like this on line 600:
> local id = naughty.notify(args)
>
> and my rc.lua looks like this where the local naughty module is defined:
> 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
>
> @David: removing the .id part in naughty.lua:600 is necessary to prevent
> the error that happens when not trying to deal with keeping the id's in a
> table (which is what Alexis was suggesting). If I understand it correctly,
> if you want to be able to change the same notification without creating a
> new one, you have to manage the id's.
>
> e.g. without managing id's, changing the backlight from 0 to 100% might
> result in 100 1% notifications piling up!
>
> However, since I don't use high-frequency notifications on my desktop, I
> can ignore the need for notification id's for now.
>
> Thanks everyone!
> Abe
>
> On Fri, Jun 5, 2015 at 8:31 AM, David Sorkovsky <
> davidsorkov...@hotmail.com> wrote:
>
>>
>>
>> Of I understand the…
>>
>>
>>
>> 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
>>
>>
>>
>>
>>
>> … code correctly, would you even need to modify naughty.lua?
>>
>>
>>
>>
>>
>> Regards
>>
>>
>>
>> Dave
>>
>>
>> ------------------------------
>>
>> *From:* Alexis BRENON [mailto:brenon.ale...@gmail.com]
>> *Sent:* Friday, 5 June 2015 11:07 PM
>> *To:* Abraham Baker
>> *Cc:* Elv1313 .; awesome
>> *Subject:* Re: Naughty Notifications on multiple monitors
>>
>>
>>
>> Instead of hidding the error just replace line 600 from:
>> local id = naughty.notify(args).id
>>
>> to
>>
>> naughty.notify(args)
>>
>>
>>
>> You don't need the id any more if you don't use it. This way, no more
>> error.
>>
>> Le ven. 5 juin 2015 à 14:57, Abraham Baker <z1693...@students.niu.edu> a
>> écrit :
>>
>> 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
>> >
>> >
>>
>>
>>
>>
>>
>>
>>
>>
>

Reply via email to