Files
qtile/plugins/__pycache__/graphical_notifications.cpython-314.pyc

155 lines
26 KiB
Plaintext
Raw Normal View History

2026-02-23 17:56:46 +01:00
+
<00><><EFBFBD>h<EFBFBD>B<00><01><00>Rt^RIHt^RIt^RIHt^RIHtHtH t H
t
H t ^RI H t ^RIHt^RIHtHt^RIHt]'d$^R IHtHtHtHtHtHt^R
IHt^R IHt^R IHt!R R]PB4t"R# ] d]tL"i;i)a<>
Qtile plugin that acts as a notification server and draws notification windows.
Clicking on a notification will trigger the default action, e.g. telling Firefox to open
the tab that sent the notification. If you want access to a notification's non-default
actions then you need to disable the "actions" capability of the `Notifier` by passing
`actions=False`.
Usage:
from graphical_notifications import Notifier
notifier = Notifier()
keys.extend([
Key([mod], 'grave', lazy.function(notifier.prev)),
Key([mod, 'shift'], 'grave', lazy.function(notifier.next)),
Key(['control'], 'space', lazy.function(notifier.close)),
])
Qtile versions known to work: 0.17 - 0.18
)<01> annotationsN)<01> TYPE_CHECKING)<05> configurable<6C>hook<6F>images<65> pangocffi<66>qtile)<01>lazy)<01>logger)<02>notifier<65> ClosedReason)<01>Popup)<06>Any<6E>Callable<6C>Dict<63>List<73>Optional<61>Tuple)<01> ImageSurface)<01>Qtile)<01> Notificationc<01>6<00>]tRt^0tRt.R,Ot0R-mtRRltRRltRRlt R R
lt
R R lt R Rlt RRlt RRltR.RRlltRRltRRltR/RRlltRRltRRltRR ltR.R!R"lltR.R#R$lltR.R%R&lltR.R'R(lltR.R)R*lltR+tR#)0<>Notifiera<72>
This class provides a full graphical notification manager for the
org.freedesktop.Notifications service implemented in libqtile.notify.
The format option determines what text is shown on the popup windows, and supports
markup and new line characters e.g. '<b>{summary}</b>
{body}'. Available
placeholders are summary, body and app_name.
Foreground and background colours can be specified either as tuples/lists of 3
strings, corresponding to low, normal and critical urgencies, or just a single
string which will then be used for all urgencies. The timeout and border options can
be set in the same way.
The max_windows option limits how many popup windows can be drawn at a time. When
more notifications are recieved while the maximum number are already drawn,
notifications are queued and displayed when existing notifications are closed.
TODO:
- text overflow
- select screen / follow mouse/keyboard focus
- critical notifications to replace any visible non-critical notifs immediately?
- hints: image-path, desktop-entry (for icon)
- hints: Notifier parameters set for single notification?
- hints: progress value e.g. int:value:42 with drawing
Nc<01><00>V^8<>dQhRR/#<00><03><00>return<72>None<6E>)<01>formats"<22>?/home/cerberus/.config/qtile/plugins/graphical_notifications.py<70> __annotate__<5F>Notifier.__annotate__<5F>s<00><00>4<>4<>D<EFBFBD>4<>c <09>6a<00>\PP!S3/VBSP\P
4.Sn.Sn.Sn.Sn RSn
^Sn RSn RSn /SnSPR4SPR4SPR4SPR4\ P"P%V3Rl4SP&RJd"\P(P+R4R#R#)NF<4E>
foreground<EFBFBD>
background<EFBFBD>timeout<75>borderc<01>L<<01>\P!SP44#<00>N)<03>asyncio<69> create_task<73>
_configure<EFBFBD><01>selfs<00>r <00><lambda><3E>#Notifier.__init__.<locals>.<lambda><3E>s<00><><00>w<EFBFBD>':<3A>':<3A>4<EFBFBD>?<3F>?<3F>;L<>'Mr#<00>actions)r<00> Configurable<6C>__init__<5F> add_defaultsr<00>defaults<74>_hidden<65>_shown<77>_queue<75>
_positions<EFBFBD> _scroll_popup<75> _current_id<69> _notif_id<69>_paused<65>_icons<6E>_make_attr_listr<00> subscribe<62>startupr2<00> capabilities<65>remove)r/<00>configsf,r r4<00>Notifier.__init__<5F>s<><00><><00><14>!<21>!<21>*<2A>*<2A>4<EFBFBD>:<3A>6<EFBFBD>:<3A> <0C><19><19>(<28>+<2B>+<2B>,<2C>$&<26><04> <0C>#%<25><04> <0B>*,<2C><04> <0B>13<31><04><0F>.2<EFBFBD><04><1A> !<21><04><18>(,<2C><04><0E>"<22><04> <0C>;=<3D><04> <0B> <0C><1C><1C>\<5C>*<2A> <0C><1C><1C>\<5C>*<2A> <0C><1C><1C>Y<EFBFBD>'<27> <0C><1C><1C>X<EFBFBD>&<26> <0C><0E><0E><1E><1E>M<>N<> <0F><<3C><<3C>5<EFBFBD> <20> <14> !<21> !<21> (<28> (<28><19> 3<> !r#c<01> <00>V^8<>dQhRRRR/#)r<00>attr<74>strrrr)rs"r r!r"<00>s<00><00>.<2E>.<2E>C<EFBFBD>.<2E>D<EFBFBD>.r#c <0A><><00>\W4p\V\\34'g\ WV3^,4R#R#)z8
Turns '#000000' into ('#000000', '#000000', '#000000')
N)<05>getattr<74>
isinstance<EFBFBD>tuple<6C>list<73>setattr)r/rH<00>values&& r r@<00>Notifier._make_attr_list<73>s4<00><00><18><04>#<23><05><19>%<25>%<25><14><1D>/<2F>/<2F> <13>D<EFBFBD><15><08>1<EFBFBD> <0C> -<2D>0r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"<00>s<00><00>-C<01>-C<01>$<24>-Cr#c <00> <0A><>"<00>VPfVP^,VnVPfVP^,VnRVPRVPRVP
RVP /p\PFWpV^,p\W4'gK\W4p\V\\34'dV^,W&KSWAV&KY \VP4F<>p\\ 3/VBpVP#V4VP$nRVnVP*P-V4VP.P-VPVPWPP ^VP0,,VP2,,,34K<> \4P6P94\4P:P94\4P<!VP>\@PBVPDR7GRjx<01>L
\FPH!R4R#L5i)zu
This method needs to be called to set up the Notifier with the Qtile manager and
create the required popup windows.
N<EFBFBD>x<>y<>width<74>height)<01>on_closez+Notification server started up successfully)%<25>horizontal_padding<6E>fontsize<7A>vertical_paddingrTrUrVrWr r6<00>hasattrrKrLrMrN<00>range<67> max_windowsr<00>_process_button_click<63>win<69>process_button_click<63>notifr7<00>appendr:<00> border_width<74>gapr <00> callbacks<6B>clear<61>close_callbacks<6B>register<65>_notifyrrC<00> _on_closer
<00>info)r/<00> popup_config<69>opt<70>keyrPr`<00>popups& r r-<00>Notifier._configure<72>s<><00><00><00>
<10> "<22> "<22> *<2A>&*<2A>m<EFBFBD>m<EFBFBD>q<EFBFBD>&8<>D<EFBFBD> #<23> <0F> <20> <20> (<28>$(<28>M<EFBFBD>M<EFBFBD>Q<EFBFBD>$6<>D<EFBFBD> !<21> <10><14><16><16> <0F><14><16><16> <13>T<EFBFBD>Z<EFBFBD>Z<EFBFBD> <14>d<EFBFBD>k<EFBFBD>k<EFBFBD> 
<EFBFBD> <0C><19>><3E>><3E>C<EFBFBD><15>a<EFBFBD>&<26>C<EFBFBD><16>t<EFBFBD>!<21>!<21><1F><04>*<2A><05><1D>e<EFBFBD>e<EFBFBD>T<EFBFBD>]<5D>3<>3<>(-<2D>a<EFBFBD><08>L<EFBFBD>%<25>(-<2D><13>%<25>"<22><19><14>)<29>)<29>*<2A>C<EFBFBD><19>%<25>0<><<3C>0<>E<EFBFBD>-1<>-G<>-G<><05>-N<>E<EFBFBD>I<EFBFBD>I<EFBFBD> *<2A><1E>E<EFBFBD>K<EFBFBD> <10>L<EFBFBD>L<EFBFBD> <1F> <1F><05> &<26> <10>O<EFBFBD>O<EFBFBD> "<22> "<22><18>F<EFBFBD>F<EFBFBD><18>F<EFBFBD>F<EFBFBD>S<EFBFBD>K<EFBFBD>K<EFBFBD>!<21>d<EFBFBD>6G<36>6G<36>2G<32>$G<>$<24>(<28>(<28>$R<>S<>S<><12> <0E> +<2B> <11><1A><1A> <20> <20>"<22><10> <20> <20>&<26>&<26>(<28><16><1F><1F> <10>L<EFBFBD>L<EFBFBD>(<28>/<2F>/<2F>$<24>.<2E>.<2E>
<EFBFBD>
<EFBFBD>
<EFBFBD> <0F> <0B> <0B>A<>B<>
<EFBFBD>s<00>B)I$<01>0FI$<01>I"<04>I$c<01> <00>V^8<>dQhRRRR/#)rrpr rrr)rs"r r!r"<00>s<00><00><11><11>5<EFBFBD><11>X<EFBFBD>r#c <09>aa<01>RVV3RllpV#)c<01>(<00>V^8<>dQhRRRRRRRR/#)rrT<00>intrU<00>buttonrrr)rs"r r!<00>4Notifier._process_button_click.<locals>.__annotate__<5F>s.<00><00> B<01> B<01><13> B<01><13> B<01>c<EFBFBD> B<01>d<EFBFBD> Br#c<01><><<02>V^8Xd3SPS4SPS\PR7V^8Xd$SPS\PR7R#R#)<03>)<01>reasonN)<04>_act<63>_closer <00> dismissed)rTrUrvrpr/s&&&<26><>r <00>_<>)Notifier._process_button_click.<locals>._<>sN<00><><00><15><11>{<7B><14> <09> <09>%<25> <20><14> <0B> <0B>E<EFBFBD>,<2C>*@<40>*@<40> <0B>A<><15><11>{<7B><14> <0B> <0B>E<EFBFBD>,<2C>*@<40>*@<40> <0B>A<>r#r)r/rpr~sff r r_<00>Notifier._process_button_click<63>s<00><><00> B<01> B<01><11>r#c<01> <00>V^8<>dQhRRRR/#)rrbrrrr)rs"r r!r"<00>s<00><00>&<26>&<26>\<5C>&<26>d<EFBFBD>&r#c <0A><><00>VP'dVPPV4R#\P'd<>\PP
'd<>VP
R8wdwVP
R8XddVP \P9d*\PPVP 4VPPV4R#VP'dxVPFgpVPVPP8XgK*VPPV4VPW4VP!4R# VP"'d,VPWP"P%44R#VPPV4R#)z<>
This method is registered with the NotificationManager to handle notifications
received via dbus. They will either be drawn now or queued to be drawn soon.
N<EFBFBD>show<6F>queue)r>r9rcr<00>current_window<6F>
fullscreen<EFBFBD> _unfullscreenr<00> subscriptionsrA<00> float_change<67> replaces_idr8rbrD<00>_send<6E> _repositionr7<00>pop)r/rbrps&& r rj<00>Notifier._notify<66>s-<00><00>
<10><<3C><<3C><<3C> <10>K<EFBFBD>K<EFBFBD> <1E> <1E>u<EFBFBD> %<25> <12> <10> <1F> <1F> <1F>E<EFBFBD>$8<>$8<>$C<>$C<>$C<><13><EFBFBD><EFBFBD>&<26>(<28><17>?<3F>?<3F>g<EFBFBD>-<2D><1B>)<29>)<29><14>1C<31>1C<31>C<><1C><0E><0E>3<>3<>D<EFBFBD>4F<34>4F<34>G<><18>K<EFBFBD>K<EFBFBD>&<26>&<26>u<EFBFBD>-<2D><16> <10> <1C> <1C> <1C><1D><1B><1B><05><18>$<24>$<24><05> <0B> <0B>(?<3F>(?<3F>?<3F><18>K<EFBFBD>K<EFBFBD>&<26>&<26>u<EFBFBD>-<2D><18>J<EFBFBD>J<EFBFBD>u<EFBFBD>,<2C><18>$<24>$<24>&<26><1A> %<25> <10><<3C><<3C><<3C> <10>J<EFBFBD>J<EFBFBD>u<EFBFBD>l<EFBFBD>l<EFBFBD>.<2E>.<2E>0<> 1<> <10>K<EFBFBD>K<EFBFBD> <1E> <1E>u<EFBFBD> %r#c<01> <00>V^8<>dQhRRRR/#)r<00>nidrurrr)rs"r r!r"<00>s<00><00>D<01>D<01>S<EFBFBD>D<01>T<EFBFBD>Dr#c <09>n<00>VPF$pVPW!\PR7K& R#))r<>rzN)r8r|r <00>method)r/r<>rps&& r rk<00>Notifier._on_close<73>s&<00><00><19>[<5B>[<5B>E<EFBFBD> <10>K<EFBFBD>K<EFBFBD><05>|<7C>/B<>/B<>K<EFBFBD> C<>!r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"<00>s<00><00><1D><1D>t<EFBFBD>r#c <0A><><00>\PP'g<\PP VP 4VP4R#R#)zC
Begin displaying of queue notifications after leaving fullscreen.
N)rr<>r<>r<00> unsubscriber<65>r<><00> _renotifyr.s&r r<><00>Notifier._unfullscreen<65>s?<00><00><15>#<23>#<23>.<2E>.<2E>.<2E> <10> <1C> <1C> )<29> )<29>$<24>*<<3C>*<<3C> =<3D> <10>N<EFBFBD>N<EFBFBD> <1C>/r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"s<00><00>'<27>'<27>4<EFBFBD>'r#c <0A><><00>VPP4pVPP4V'd#VPVP ^44K*R#)z<>
If we hold off temporarily on sending notifications and accumulate a queue, we
should use this to send the queue through self._notify again.
N)r9<00>copyrgrjr<>)r/r<>s& r r<><00>Notifier._renotifysB<00><00>
<15> <0B> <0B> <20> <20>"<22><05> <0C> <0B> <0B><19><19><1B><13> <10>L<EFBFBD>L<EFBFBD><15><19><19>1<EFBFBD><1C> &<26>r#c<01>(<00>V^8<>dQhRRRRRRRR/#) rrbrrpr r'<00> Optional[int]rrr)rs"r r!r" s2<00><00>9S<01>9S<01>!<21>9S<01>*/<2F>9S<01>:G<>9S<01> <0A>9Sr#c <0A>~<00>VPV4pRVP9dVPR,PpM^pV;P^, unVPVnWnW P 9dVP PV4VP4wVn Vn
VP4VPV4pVP4VPV,VnVPV,VP nVP%4V'd<>VP'V^,VP(^VP*V^,,
^, ,4V;P(VP,VP(^, ,, un\/VP1R44FewrxW<78>P nVP4WrP P*VP6,,,p VP9V R7Kg VP:'d#VP=VP>V,4VPA4V'dVP(VnVfAVPBeVPB^8dVPBV,pM'VPBpMV^8dVPBV,pV^8<>d6\DPF!VR, VPHW P4R#R#)zC
Draw the desired notification using the specified Popup instance.
<EFBFBD>urgency<63>
)rUNi<4E>)%<25> _get_text<78>hintsrPr<<00>idrbr8rc<00>_get_coordinatesrTrU<00>place<63>
_load_icon<EFBFBD>unhider&r%<00>layout<75>colourrg<00>
draw_imagerYrW<00> icon_size<7A> enumerate<74>split<69>textr[<00> line_spacing<6E> draw_textrd<00>
set_borderr(<00>drawr'r<00>
call_laterr|)
r/rbrpr'r<>r<><00>icon<6F>num<75>linerUs
&&&& r r<><00>Notifier._send sN<00><00> <14>~<7E>~<7E>e<EFBFBD>$<24><04> <14><05> <0B> <0B> #<23><1B>k<EFBFBD>k<EFBFBD>)<29>,<2C>2<>2<>G<EFBFBD><17>G<EFBFBD> <0C><18><18>A<EFBFBD><1D><18><17>#<23>#<23><05><08><1B> <0B> <10> <0B> <0B> #<23> <10>K<EFBFBD>K<EFBFBD> <1E> <1E>u<EFBFBD> %<25><1F>0<>0<>2<><18><05><07><15><17> <0A> <0B> <0B> <0A><13><EFBFBD><EFBFBD>u<EFBFBD>%<25><04> <0A> <0C> <0C><0E><1F>?<3F>?<3F>7<EFBFBD>3<><05><18>"<22>o<EFBFBD>o<EFBFBD>g<EFBFBD>6<><05> <0C> <0C><1B> <0A> <0B> <0B> <0A> <10> <11> <1C> <1C><14>Q<EFBFBD><07><14>'<27>'<27><11>T<EFBFBD>[<5B>[<5B>4<EFBFBD><01>7<EFBFBD>*<2A>a<EFBFBD>/<2F>/<2F> <0E>
<12> $<24> $<24><04><0E><0E><14>9P<39>9P<39>ST<53>9T<39>(T<> T<> $<24>#<23>4<EFBFBD>:<3A>:<3A>d<EFBFBD>#3<>4<>I<EFBFBD>C<EFBFBD> $<24>L<EFBFBD>L<EFBFBD> <1D><14>%<25>%<25><03>|<7C>|<7C>/B<>/B<>T<EFBFBD>EV<45>EV<45>/V<>(W<>W<>A<EFBFBD> <11>O<EFBFBD>O<EFBFBD>a<EFBFBD>O<EFBFBD> <20>5<>
<10> <1C> <1C> <1C> <11> <1C> <1C>T<EFBFBD>[<5B>[<5B><17>1<> 2<> <0A>
<EFBFBD>
<EFBFBD> <0C> <0F>'+<2B>'><3E>'><3E>E<EFBFBD> $<24> <12>?<3F><14>}<7D>}<7D>$<24><05> <0A> <0A><01>(9<><1E>,<2C>,<2C>w<EFBFBD>/<2F><07><1F>-<2D>-<2D><07> <14>q<EFBFBD>[<5B><1A>l<EFBFBD>l<EFBFBD>7<EFBFBD>+<2B>G<EFBFBD> <12>Q<EFBFBD>;<3B> <11> <1C> <1C>W<EFBFBD>t<EFBFBD>^<5E>T<EFBFBD>[<5B>[<5B>%<25>AQ<41>AQ<41> R<> r#c<01> <00>V^8<>dQhRRRR/#)rrbrrrIr)rs"r r!r"Gs<00><00>
Q<01>
Q<01>|<7C>
Q<01><03>
Qr#c <09>t<00>RpRpRpVP'd!\P!VP4pVP'd!\P!VP4pVP'd!\P!VP4pVP
P W#VR7#)<02>)<03>summary<72>body<64>app_name)r<>r<00>markup_escape_textr<74>r<>r)r/rbr<>r<>r<>s&& r r<><00>Notifier._get_textGs<><00><00><14><07><11><04><15><08> <10>=<3D>=<3D>=<3D><1F>2<>2<>5<EFBFBD>=<3D>=<3D>A<>G<EFBFBD> <10>:<3A>:<3A>:<3A><1C>/<2F>/<2F><05>
<EFBFBD>
<EFBFBD>;<3B>D<EFBFBD> <10>><3E>><3E>><3E> <20>3<>3<>E<EFBFBD>N<EFBFBD>N<EFBFBD>C<>H<EFBFBD><13>{<7B>{<7B>!<21>!<21>'<27>x<EFBFBD>!<21>P<>Pr#c<01><00>V^8<>dQhRR/#)rrzTuple[int, int]r)rs"r r!r"Ss<00><00>*<2A>*<2A>/<2F>*r#c <09><><00>VP\VP4^,
,wr\VP\
4'd#\ PVP,pMUVPR8Xd\ PpM3VPR8Xd#\ P!\ P!pVXP,W#P,3#)ry<00>focus<75>mouse) r:<00>lenr8rL<00>screenrur<00>screens<6E>current_screen<65> find_screen<65>mouse_positionrTrU)r/rTrUr<>s& r r<><00>Notifier._get_coordinatesSs<><00><00><13><EFBFBD><EFBFBD>s<EFBFBD>4<EFBFBD>;<3B>;<3B>/<2F>!<21>3<>4<><04><01> <15>d<EFBFBD>k<EFBFBD>k<EFBFBD>3<EFBFBD> '<27> '<27><1A>]<5D>]<5D>4<EFBFBD>;<3B>;<3B>/<2F>F<EFBFBD> <11>[<5B>[<5B>G<EFBFBD> #<23><1A>)<29>)<29>F<EFBFBD> <11>[<5B>[<5B>G<EFBFBD> #<23><1A>&<26>&<26><05>(<<3C>(<<3C>=<3D>F<EFBFBD><10>6<EFBFBD>8<EFBFBD>8<EFBFBD>|<7C>Q<EFBFBD><18><18>\<5C>)<29>)r#c<01>$<00>V^8<>dQhRRRRRR/#)rrpr r<>r<>rrr)rs"r r!r"]s!<00><00><1B><1B>E<EFBFBD><1B> <0A><1B>4<EFBFBD>r#c <0A>F<00>WP9EdVeVPV8wdR#VPPV4VPVJdRVnRVnVP 4VP 'd?VP'g-VPVP P^4V4MVPPV4\PPVPPV4VP!4R#)z%
Close the specified Popup instance.
N)r8r<>rDr;r=<00>hider9r>r<>r<>r7rcr <00>_service<63>NotificationClosedrbr<>)r/rpr<>rzs&&&&r r|<00>Notifier._close]s<><00><00> <11>K<EFBFBD>K<EFBFBD> <1F><12><EFBFBD>5<EFBFBD>8<EFBFBD>8<EFBFBD>s<EFBFBD>?<3F><16> <10>K<EFBFBD>K<EFBFBD> <1E> <1E>u<EFBFBD> %<25><13>!<21>!<21>U<EFBFBD>*<2A>%)<29><04>"<22>!%<25><04><0E> <11>J<EFBFBD>J<EFBFBD>L<EFBFBD><13>{<7B>{<7B>{<7B>4<EFBFBD><<3C><<3C><<3C><14>
<EFBFBD>
<EFBFBD>4<EFBFBD>;<3B>;<3B>?<3F>?<3F>1<EFBFBD>-<2D>u<EFBFBD>5<><14> <0C> <0C>#<23>#<23>E<EFBFBD>*<2A> <14> <1D> <1D> 0<> 0<><15><1B><1B><1E><1E><16> H<> <0C><18><18>r#c<01> <00>V^8<>dQhRRRR/#)rrpr rrr)rs"r r!r"ps<00><00>T<01>T<01>%<25>T<01>D<EFBFBD>Tr#c <0A><><00>VPP'dR\PP VPP
VPP^,4R#R#)zO
Execute the actions specified by the notification visible on a clicked popup.
N)rbr2r r<><00> ActionInvokedr<64>)r/rps&&r r{<00> Notifier._actpsG<00><00> <11>;<3B>;<3B> <1E> <1E> <1E> <14> <1D> <1D> +<2B> +<2B>E<EFBFBD>K<EFBFBD>K<EFBFBD>N<EFBFBD>N<EFBFBD>E<EFBFBD>K<EFBFBD>K<EFBFBD><O<><O<>PQ<50><R<> S<> r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"ys<00><00><1A><1A>T<EFBFBD>r#c <09><><00>\VP4F5wrVPV,wVnVnVP 4K7 R#r*)r<>r8r:rTrUr<>)r/<00>index<65>showns& r r<><00>Notifier._repositionys7<00><00>%<25>d<EFBFBD>k<EFBFBD>k<EFBFBD>2<>L<EFBFBD>E<EFBFBD>#<23><EFBFBD><EFBFBD>u<EFBFBD>5<> <1C>E<EFBFBD>G<EFBFBD>U<EFBFBD>W<EFBFBD> <11>K<EFBFBD>K<EFBFBD>M<EFBFBD>3r#c<01> <00>V^8<>dQhRRRR/#)rrbrrz"Optional[Tuple[ImageSurface, int]]r)rs"r r!r"~s<00><00>+<2B>+<2B> <0C>+<2B>1S<31>+r#c <09>X<00>VP'gR#VPVP9d&VPPVP4#\PP VP4pVP VP8<>dVPVPR7MVPVPR7\P!VPVP VP4wr4W3P43VPVP&VPVP,# \\P\3d:p\ P"!T4RTPTP&Rp?LqRp?ii;i)N)rV)rW)<12>app_iconr?<00>getr<00>Img<6D> from_pathrVrW<00>resizer<65><00>_decode_to_image_surface<63> bytes_img<6D>
get_height<EFBFBD>FileNotFoundError<6F> LoadingError<6F>IsADirectoryErrorr
<00> exception)r/rb<00>img<6D>surfacer~<00>es&& r r<><00>Notifier._load_icon~s <00><00><14>~<7E>~<7E>~<7E><17> <10>><3E>><3E>T<EFBFBD>[<5B>[<5B> (<28><17>;<3B>;<3B>?<3F>?<3F>5<EFBFBD>><3E>><3E>2<> 2<> /<2F><18>*<2A>*<2A>&<26>&<26>u<EFBFBD>~<7E>~<7E>6<>C<EFBFBD><12>y<EFBFBD>y<EFBFBD>3<EFBFBD>:<3A>:<3A>%<25><13>
<EFBFBD>
<EFBFBD><14><1E><1E>
<EFBFBD>0<><13>
<EFBFBD>
<EFBFBD>$<24>.<2E>.<2E>
<EFBFBD>1<><1F>8<>8<><13> <0A> <0A>s<EFBFBD>y<EFBFBD>y<EFBFBD>#<23>*<2A>*<2A><0E>J<EFBFBD>G<EFBFBD>+2<>3E<33>3E<33>3G<33>*G<>D<EFBFBD>K<EFBFBD>K<EFBFBD><05><0E><0E> '<27><14>{<7B>{<7B>5<EFBFBD>><3E>><3E>*<2A>*<2A><>"<22>6<EFBFBD>#6<>#6<>8I<38>J<> /<2F> <12> <1C> <1C>Q<EFBFBD> <1F>*.<2E>D<EFBFBD>K<EFBFBD>K<EFBFBD><05><0E><0E> '<27><> /<2F>s<00>CE<00> F)<03>0/F$<03>$F)c<01><00>V^8<>dQhRR/#rr)rs"r r!r"<00>s<00><00>(<28>(<28>D<EFBFBD>(r#c <0A>r<00>VP'd%VPVP^,4R#R#)z0
Close the oldest of all visible popup windows.
N)r8r|<00>r/<00>_qtiles&&r <00>close<73>Notifier.close<73>s&<00><00> <10>;<3B>;<3B>;<3B> <10>K<EFBFBD>K<EFBFBD><04> <0B> <0B>A<EFBFBD><0E> '<27> r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"<00>s<00><00>(<28>(<28><04>(r#c <0A><><00>VPP4VP'd%VPVP^,4K6R#)z
Close all popup windows.
N)r9rgr8r|r<>s&&r <00> close_all<6C>Notifier.close_all<6C>s6<00><00> <0A> <0B> <0B><19><19><1B><12>k<EFBFBD>k<EFBFBD>k<EFBFBD> <10>K<EFBFBD>K<EFBFBD><04> <0B> <0B>A<EFBFBD><0E> '<27>r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"<00>s<00><00><0E><0E>4<EFBFBD>r#c <0A><00>\P'd<>VPfjVP'd"VPP ^4VnMVP
^,Vn\ \P4VnVP^8<>dV;P^,unTP\PVP,VPVP'd^MR4R#R#)z3
Display the previous notification in the history.
N)
r <00> notificationsr;r7r<>r8r<>r=r<><00>sticky_historyr<79>s&&r <00>prev<65> Notifier.prev<65>s<><00><00> <14> !<21> !<21> !<21><13>!<21>!<21>)<29><17><<3C><<3C><<3C>)-<2D><1C><1C>)9<>)9<>!<21>)<<3C>D<EFBFBD>&<26>)-<2D><1B><1B>Q<EFBFBD><1E>D<EFBFBD>&<26>!$<24>X<EFBFBD>%;<3B>%;<3B>!<<3C><04><0E><13>~<7E>~<7E><01>!<21><14><0E><0E>!<21>#<23><0E> <10>J<EFBFBD>J<EFBFBD><18>&<26>&<26>t<EFBFBD>~<7E>~<7E>6<><14>"<22>"<22><19>(<28>(<28>(<28><01>d<EFBFBD> <0E> "r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"<00>s<00><00> <0E> <0E>4<EFBFBD> r#c <0A><><00>VP'd<>VP\\P4^,
8dV;P^, unVPVP
9d&VP
P VP4TP\PVP,VPVP'd^MR4R#R#)z/
Display the next notification in the history.
N) r;r=r<>r r<>r8rDr<>r<>r<>s&&r <00>next<78> Notifier.next<78>s<><00><00> <10> <1D> <1D> <1D><13>~<7E>~<7E><03>H<EFBFBD>$:<3A>$:<3A> ;<3B>a<EFBFBD> ?<3F>?<3F><14><0E><0E>!<21>#<23><0E><13>!<21>!<21>T<EFBFBD>[<5B>[<5B>0<><14> <0B> <0B>"<22>"<22>4<EFBFBD>#5<>#5<>6<> <10>J<EFBFBD>J<EFBFBD><18>&<26>&<26>t<EFBFBD>~<7E>~<7E>6<><14>"<22>"<22><19>(<28>(<28>(<28><01>d<EFBFBD> <0E> r#c<01><00>V^8<>dQhRR/#rr)rs"r r!r"<00>s<00><00> ,<2C> ,<2C>D<EFBFBD> ,r#c <0A><><00>VP'dRVnVP4R#RVnVP'd%VPVP^,4K6R#)zz
Pause display of notifications on screen. Notifications will be queued and
presented as usual when this is called again.
FTN)r>r<>r8r|r<>s&&r <00>pause<73>Notifier.pause<73>sG<00><00>
<10><<3C><<3C><<3C> <20>D<EFBFBD>L<EFBFBD> <10>N<EFBFBD>N<EFBFBD> <1C><1F>D<EFBFBD>L<EFBFBD><16>+<2B>+<2B>+<2B><14> <0B> <0B>D<EFBFBD>K<EFBFBD>K<EFBFBD><01>N<EFBFBD>+<2B>r#) r<r7r?r=r>r:r9r;r8rYr[))rT<00> z4x position on screen to start drawing notifications.)rU<00>@z4y position on screen to start drawing notifications.)rV<00><>zWidth of notifications.)rWrzHeight of notifications.)rz{summary}
{body}z Text format.)r%)<03>#ffffffrrzBForeground colour of notifications, in ascending order of urgency.)r&<00><03>#111111r
r
zBBackground colour of notifications, in ascending order of urgency.)r(r z?Border colours in ascending order of urgency. Or None for none.)r')<03><>r <00>z<Millisecond timeout duration, in ascending order of urgency.)<03>opacityg<00>?zOpacity of notifications.)rd<00>zLine width of drawn borders.)<03> corner_radiusNz)Corner radius for round corners, or None.)<03>font<6E>sanszFont used in notifications.)rZ<00>z Size of font.)<03>
fontshadowNz/Color for text shadows, or None for no shadows.)<03>text_alignment<6E>leftz&Text alignment: left, center or right.)rYrzPadding at sides of text.)r[rz"Padding at top and bottom of text.)r<>rzSpace between lines.)<03>overflow<6F>truncatezEHow to deal with too much text: more_width, more_height, or truncate.)r^rz*Maximum number of windows to show at once.)re<00> z#Vertical gap between popup windows.)r<>Tz&Disable timeout when browsing history.)r<><00>$zPixel size of any icons.)r<>r<>z4What to do when in fullscreen: show, hide, or queue.)r<>r<>z0How to select a screen: focus, mouse, or an int.)r2Tz)Whether to enable the actions capability.>r<>r2<00> body-markupr*)Nry)<1C>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__firstlineno__<5F>__doc__r6rCr4r@r-r_rjrkr<>r<>r<>r<>r<>r|r{r<>r<>r<>r<>r<>r<>r<00>__static_attributes__rr#r rr0s<><00><00><08>60<06>H<EFBFBD>b6<>L<EFBFBD>4<>..<2E>-C<01>^<11>&<26><D<01><1D>'<27>9S<01>v
Q<01>*<2A><1B>&T<01><1A>
+<2B>((<28>(<28><0E>& <0E> ,<2C> ,r#r)#r<00>
__future__rr+<00>typingr<00>libqtilerrrrr<00> libqtile.lazyr <00>libqtile.log_utilsr
<00>libqtile.notifyr r <00>libqtile.popupr rrrrrr<00> cairocffir<00>libqtile.core.managerrr<00> ImportErrorr3rrr#r <00><module>r+sh<00><01><04>.#<23><0E> <20>A<>A<><1E>%<25>2<> <20><10>A<>A<>&<26>+<2B><1B>0<>
^,<2C>|<7C>(<28>(<28>^,<2C><> <17><1B><1A> <0C><1B>s<00> A=<00>= B <03>B