Once again, updating to awesome v3.5.9 led to me needing to re-edit line 600 of naughty.lua.
Is there a way I can permanently implement this change, or should I just anticipate this for every update? Thanks, Abe On Wed, Feb 3, 2016 at 8:02 PM, Abraham Baker <z1693...@students.niu.edu> wrote: > 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 >>> > >>> > >>> >>> >>> >>> >>> >>> >>> >>> >> >