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