/srv/irclogs.ubuntu.com/2016/05/19/#ubuntu-desktop.txt

Trevinhopitti: ah, ok... I think upstart has still to be pushed there... We've unity waiting though: https://launchpad.net/ubuntu/trusty/+queue?queue_state=1&queue_text=unity :)01:43
dufluTrevinho: Morning BTW :)01:43
Trevinhohey duflu01:43
Trevinhopitti: upower patch updated too02:41
mac3liteCan anyone here help me with installing drivers for MacBookPro9,1 in Ubuntu 14?04:41
hikikohi04:50
hikikohttp://askubuntu.com/questions/188040/installing-drivers-for-ubuntu-12-04-on-macbook-pro-9-1-mid-2012-15-inch04:54
hikikomac3lite: ^ i don't have a MacBook but I hope  this helps04:56
pittiGood morning06:45
pittiTrevinho: I didn't accept unity as bug 1568031 isn't fixed in devel yet, see my bug followup from yesterday06:46
ubot5bug 1568031 in unity (Ubuntu) "Blurred login page after resume from S3" [Undecided,In progress] https://launchpad.net/bugs/156803106:46
seb128hey pitti, wie gehts?07:19
pittiseb128: gut, danke! und Dir?07:19
pittihad a nice basketball game yesterday07:19
seb128I'm good thanks ;-)07:19
seb128ah, nice07:19
seb128and I had fun at tennis :-)07:19
pittiseb128: Go sports!07:23
seb128:-)07:24
* pitti remembers that geek T-Shirt: "Go sports! Move that thing there before the others move it here!"07:25
=== Guest93037 is now known as fredp
=== fredp is now known as Guest37763
Laneyhallo08:01
pittihey Laney!08:02
Laneyel pitti!08:02
Laney¿cómo estás?08:02
pittiLaney: mui bien, gracias !08:05
seb128hey Laney!08:05
Laneyhelo seb128, sut wyt ti?08:06
willcookeallo guvnor08:08
seb128Da iawn08:08
seb128Beth amdanoch chi?08:08
seb128hoi willcooke08:08
LaneyRwy'n dda hefyd. Rydym yn dringo neithiwr ac yna aeth i'r dafarn.08:09
pittiWelsh? Or Elvish?08:10
LaneyCymraeg!08:10
seb128I assumed Welsh08:11
* seb128 doesn't know Elvish08:11
seb128not that I know welsh, but google to the rescue :p08:11
Laneyskillz08:18
ksamakTrevinho: hey! how's that 0.9.12.3 idea/milestone going?08:43
ksamakjust pinging ;-)08:43
seb128happyaron, hey! how are the n-m updates going? -applet should be easy, do you know if we can SRU 1.2.2 on top of n-m 1.2.0? like not block that on the n-m update which is a bit more complex (also would be nice to backport the commit for the bug I just assigned to you)09:12
happyaronseb128: doing the patch rebasing right now09:12
seb128great, thanks09:12
seb128also did you see that p_itti found some issues with the openvpn SRU?09:13
happyaronwe can SRU 1.2.2 on top of n-m 1.2.0, tested working09:13
seb128great09:13
happyaronI've read the email but not looked at it yet09:13
seb128happyaron, could you try to  include the 3 commits from https://git.gnome.org/browse/network-manager-applet/log/?h=nma-1-2 as well? at least the key and the assert one are reported in launchpad09:16
happyaronwill do09:17
seb128thanks09:28
=== Drac0 is now known as Guest81953
araseb128, shall we mark the unity-greeter task of this bug as Invalid and/or Fix released? https://bugs.launchpad.net/oem-priority/+bug/128687809:46
=== greyback is now known as greyback|bbiab
hikikoTrevinho, https://code.launchpad.net/~hikiko/unity/unity.panel-draw-optimisation/+merge/295187 could you get a look at this when you have a moment?10:32
=== hikiko is now known as hikiko|ln
seb128ara, yes, invalid sounds about right11:12
willcookehow is it 1230 already11:23
willcookedamn it11:23
=== hikiko|ln is now known as hikiko
Sweet5harkdoes errors.ubuntu.com autofile launchpad issues now?11:25
Laneynope11:25
Laneyyou get a link to do it11:25
Sweet5harkso someone is triggering that, and I dont know who because in launchpad its just "the errors.u.c bridge"?11:26
=== JanC is now known as Guest23785
=== JanC_ is now known as JanC
Laneyyep11:27
Sweet5hark*grumble*11:27
Trevinhohikiko: sure11:41
hikikothank you11:42
seb128Sweet5hark, bdmurray tend to click on the "file a bug" column11:43
seb128Sweet5hark, you can see who did it by who is subscribed11:43
seb128the interface subscribe whoever clicked the button11:43
Sweet5harkseb128: ah! thx11:44
seb128yw!11:44
Laneycunning11:44
Trevinhohikiko: is that case happening?  I mean, did you see cases where a panel tries to radraw an area which doesns't belong to its monitor as well?11:48
hikikoyes11:48
hikikoin ezoom11:48
TrevinhoSince panel geo should be already be the only covering the monitor... but...11:48
Trevinhohikiko: maybe wehe blurred doo?11:48
Trevinhotoo?11:48
Trevinhoah, right.....11:48
hikikoit is clipped correctly on its monitor by compiz11:48
hikikobut not from nux11:49
hikikocompiz clips anything is not part of the output11:49
Sweet5harkcant help being reminded of Laneys Cymraeg in the morning: https://twitter.com/isotopp/status/733261132194971648 ...11:50
Trevinhohikiko: I see... do you think it would be better to do this at nux level then? Although I don't think nux views have any clue of which monitor they belong to11:51
TrevinhoI know we should really have done an UnityView and always uset that as base calss more than the pure nux::View :-/11:51
hikikoTrevinho, I am trying to solve it there too11:51
Trevinhohikiko: nice, looks good though11:51
Trevinhohikiko: I was wondering if you have other unity ezoom branches, in that case, please, let's keep things connected in some way (even a list), so when SRUing it, we can be sure we backport everything11:52
hikikoI put the changes that I am sure that are needed in .EZ branches but I have 2 local branches here where I experiment with nux etc at the end I will only propose the EZ11:53
Trevinhook11:54
Trevinhoseb128: hey, did you get a chance to play with my u-s-d changes?11:55
seb128Trevinho, hey! which ones?11:57
Trevinhoseb128: kbd backlights ones11:57
seb128no, I can't, I don't have any hardward with backlight11:57
seb128ward->ware11:57
Trevinhomh, ok... Laney could probably then :)?11:57
seb128yes11:58
seb128you need the upower changes to land first though?11:58
Trevinhoseb128: well, for the first branch, the one that connects to the change event, no11:58
seb128well "yes", as I think he has a backlight kbd on his xps, unsure if he has slot for testing your changes11:59
Trevinhoyeah, I guess he's busy enough11:59
Laneyquite so, might be able to though11:59
Laneybut didn't superm_1 already do that?11:59
Trevinhoseb128: however, probably I should split the bugs... I mean there's that one for the brightness at boot, while my changes mostly affect changes on idle11:59
seb128yeah, feel free to open another bug12:00
Trevinhoso that the proper value is restored when going in idle12:00
seb128we are already using the current one for the boot issue12:00
seb128which has a SRU in proposed12:00
Trevinhoyeah12:00
Trevinhoseb128: I can do the landing of usd with your changes in the mean time btw12:00
seb128to what serie? y-?12:01
Trevinhoyes12:01
TrevinhoI can also prepare the same for x btw12:02
seb128we should do a landing with the pending merge requests12:02
seb128well, x already has a SRU12:02
Trevinhoyeah, that's what I've prepared12:02
seb128so let's get that one through first12:02
seb128also you shouldn't be able to land u-s-d :p12:02
TrevinhoI am :-D12:02
Laneywhat12:02
seb128Laney, CI train acls are different from archive ones12:02
LaneyThey were supposed to have fixed that12:03
LaneyIt checks the archive's permissions when you try to upload12:03
seb128k, maybe that bit doesn't work12:03
Trevinhoseb128: I've added to https://requests.ci-train.ubuntu.com/#/ticket/1419, but if you want to land these, feel free to grab them12:03
seb128I don't think Trevinho tried to actually land u-s-d12:03
seb128though he does compiz/unity landings12:03
seb128Trevinho, you don't have a ppu for those right?12:03
Laneyapparently it's accepted for "canonical upstream" packages12:04
TrevinhoNo, wait... I don't have permisssions to publish, I still have to be ACKed...12:04
Laneyalways seemed shady to me12:04
Trevinhoseb128: yeah, ppa is linked there12:04
Laneybut that is the rule12:04
seb128Laney, where does it say it's accepted for canonical upstream?12:04
Laneydunno where it says12:04
Laneycode of CI train probably12:04
seb128Laney, oh ok, I though you just looked up and found something that it was allowed for canonical upstreams12:05
seb128Trevinho, anyway you should apply for ubuntu-desktop maybe?12:05
LaneyI just know that12:05
seb128Laney, ^ wdyt?12:05
Laneyfrom dmb discussions12:05
Laneyumm12:05
seb128you didn't do that much desktop updates/packaging12:05
seb128but I think you are doing enough that I would be happy to +1 you12:05
seb128if not you should at least apply for ppu for the unity stack12:06
Trevinhomh... All this bureoacracy always scared me :)12:06
Trevinhobut I could12:06
Laneydon't think it is required with ci train given ^ rule12:06
Trevinhowhat should I do?12:06
Laneyyou might have to become a lander though???????????????????12:06
Laneyask robru12:06
TrevinhoI'm a lander, in the sense that i can control ci-train, but I need someone to publish my stuff12:07
Laneyit might already work for "canonical" things then12:08
Laneyin terms of ubuntu-desktop: https://wiki.ubuntu.com/DesktopTeam/Developers12:08
hikikogrr now the ttys crash in my desktop too :/12:09
TrevinhoLaney: so it's just about asking in the ML or should I do something like a wiki page^12:10
Trevinho?12:10
Laneylist is ok12:10
Trevinhoseb128: anyway, in the mean time, do you want me to remove the MPs from the list, and you care them?12:13
seb128Trevinho, can you please remove them?12:15
seb128they are not connected to the unity landing in any way12:15
seb128you shouldn't batch things that are independant12:16
seb128makes harder to land12:16
Trevinhoseb128: sure... not sure I can remove them from the built ppa though12:16
seb128like the bamf menus fix shouldn't be in there either12:16
seb128I can do that if you can12:16
seb128but if you remove them from the ci UI and reconfigre the silo it's enough12:16
Trevinhoseb128: in the other side, there's the request of not using many silos since we're going out of them12:16
Trevinhoseb128: removed, but I don't think I can reconfigrue the silo12:17
Trevinholet me se if  "build" is smart enough12:18
flexiondotorgLaney, seb128 The work on Ubuntu MATE themes starts tomorrow.12:18
LaneyFun12:19
LaneyI've done a bit on Ambiance already, but it's still crap12:19
seb128Trevinho, let me know if you need help pressing buttons12:20
flexiondotorgLaney, Link to your work please?12:21
seb128Trevinho, also for the ubuntu-desktop application wait a bit, I'm going to check if people are happy to +1 you or if the consensus is that a ppu would be better/or if you need to do some GNOME updates/merges for desktop12:21
flexiondotorgI've just uploaded this - https://launchpad.net/ubuntu/+source/mate-themes/3.18.1-0ubuntu1/+build/977109112:21
seb128Trevinho, I let you know when we figure that out, I don't want to get you to send the email if you don't get the +1 ;-)12:21
LaneyNo link12:21
flexiondotorgTo prevent the Debian sync of mate-theme 3.20 clobbering Ubuntu.12:21
Trevinhoseb128: ok, do politics for me :-)12:22
seb128right :-)12:22
Laneywhat a great campaign manager12:22
* Trevinho feels in House of Cards12:22
seb128I also need to give some cookies to Sweet5hark for getting him to apply again for libreoffice ppu12:22
seb128new board, maybe they are wanting to review that one now12:23
Laneyspeaking of house of cards12:25
Laneylunch time12:25
seb128Laney, enjoy!12:27
Trevinhoseb128: I think you've to manually remove the pkg from https://launchpad.net/~ci-train-ppa-service/+archive/ubuntu/landing-02812:33
Trevinhoas I don't see any control in ci-train to get the same12:34
andyrockhey guys12:39
willcookehi andyrock12:40
seb128hey andyrock!12:47
seb128Trevinho, can you try to ask on -ci-eng if that's the right thing to do? I've a feeling that's not the recommended way and might confuse things12:48
Trevinhoseb128: ok12:48
seb128thanks12:48
seb128mvo, hey, how are you? can I bother you about update-notifier for a moment? you made the code to determine if we update-manager should be spawned look to logs, why did you look at the ctime and not only the mtime?13:41
mvoseb128: I need to look at the code, but iirc for some stuff its only inode changes (touch). anything particular that breaks because of this?13:44
seb128mvo, yeah, update-manager is not getting spawned13:45
seb128mvo, it was working before by luck because we had a 1 day delay for security updates13:45
seb128mvo, logrotate rotates logs on a weekly basis, you added a hack to ignore the 0 byte logs, but the .1 has the ctime of the rotation, so it's never older than a week13:46
seb128so "last time launched" nevers get > 7 days13:46
seb128-> never showing update-manager13:47
mvoseb128: oh, not cool13:47
seb128yeah13:47
seb128I'm pondering just dropping the log check logic13:47
mvoseb128: yeah, fine with me13:47
seb128that seems it was controversional at the time it was added already and a bit too magic13:47
seb128like if update-manager spaws once a week if updates are available it's not too annoying13:47
seb128and command line users can change the gsettings13:48
mvoseb128: yeah, lets make it a update-day or something13:48
mvo(single day a week)13:48
seb128I've seen that somewhere :p13:48
seb128mvo, thanks for the input13:50
mvoseb128: heh :) thank you!13:52
seb128attente, hey, what is "install-via: prefix" doing? (saw your commit on gcalculator)13:56
attenteseb128: the automake plugin in snapcraft is defaulting to using DESTDIR=blah for installing instead of --prefix13:58
attente(and setting prefix to empty)13:58
seb128attente, I see, thanks13:58
attenteso because of that, galculator doesn't know where to find the main_frame.ui file13:58
attenteseb128: are you looking at this too? i tried to get the fonts working but couldn't figure out what was missing :(13:59
seb128attente, no, I didn't, I'm still working on the gnome-calculator one, just followed up the branch because didrocks was having similar issues to ours yesterday and I pointed him to the wrapper we made in Prague14:02
seb128attente, what's the issue with fonts?14:02
attentejust shows black squares for all text14:02
seb128urg14:03
seb128attente, https://bugs.launchpad.net/snapcraft/+bug/157630314:03
ubot5Launchpad bug 1576303 in snapcraft (Ubuntu) "Needs fontconfig integration" [Undecided,Confirmed]14:03
seb128attente, do you have those in your wrapper?14:03
seb128# Not good, needed for fontconfig14:03
seb128export XDG_DATA_HOME=$SNAP/usr/share14:03
seb128# Font Config14:03
seb128export FONTCONFIG_PATH=$SNAP/etc/fonts/config.d14:03
seb128export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf14:03
attenteah, ok, thanks seb128. i don't have those. desrt suggested it might've been fontconfig, but i had no idea how to get good debugging output for it14:04
seb128attente, why not just copying the wrapper we got for gnome-calculator?14:04
seb128seems like you are redoing the work we did in Prague?14:04
attentewhere is the wrapper?14:04
desrtnaughty attente!14:04
desrti thought you had already started there but were experiencing additional difficulties14:04
desrtotherwise i would have given you different advice :p14:05
seb128attente, http://bazaar.launchpad.net/~ubuntu-desktop/+junk/gnome-calculator-snap/view/head:/calc14:05
seb128attente, I hope you didn't spend too much time refiguring those out :-/14:09
attenteseb128: not too long, thanks i'll try the wrapper14:11
seb128attente, are you still in Vancouver with didrocks working on snaps? did they lock you down in a room there? :p14:12
attentewhy is GSETTINGS_SCHEMA_DIR not necessary here? is that based on XDG_DATA_DIRS or something?14:12
seb128if they did knock 3 times14:12
seb128we will know what it means and try to get out of of here :p14:12
attenteseb128: :P14:12
seb128attente, I think it is, desrt might know better though14:13
attenteseb128: didrocks is in austin, i'm back home14:13
seb128didrocks living a fancy live14:13
desrtattente: the schema dir is not needed14:13
desrti think it might have been introduced to try to get that aspect working before realising that xdg-data-dirs works just fine14:13
desrtin fact, i think it might have been added to get the 'using memory backend' warning to go away14:13
seb128desrt, attente, speaking of which ... what makes gsettings decide to use the memory backend? or how does it check if dconf is available/to be used?14:15
attentethink you have to stage dconf-gsettings-backend14:15
desrtgio extension points14:15
desrtbasically, glib looks in a designated subdir for gio plugins... things like gvfs, glib-networking, dconf, fam backend, etc.14:16
desrtand every time it needs to do [soemthing] that is done differently on different platforms, it picks the extension point with higher priority14:16
desrtdconf has a higher priority than the memory backend, so it'll use that if it's there... otherwise, not14:16
seb128attente, desrt, thanks, in fact it works ... I though it wasn't, but it's only when confined that it doesn't14:18
seb128I wonder what is the confinement blocking that it needs though14:18
* seb128 looks a bit more14:18
seb128oh14:21
seb128unable to create file '/run/user/1000/dconf/user': Permission denied.  dconf will not work properly.14:21
desrtya.  this part is pretty obvious.14:22
seb128no XDG_RUNTIME_DIR existing in the snap14:24
* seb128 asks on the snappy channel14:24
desrtya.  this is something that will eventually need to be resolved14:24
desrtbut it's kinda going to suck14:25
desrtwe either mount a fresh tmpfs in there for it to use, or we don't... and change all library users of xdg runtime dir to do something else instead14:25
seb128do you know how flatpak deal with that?14:25
desrtbut probably no matter what, we will want that directory14:25
seb128do they give you access to the real /run?14:25
desrtpretty sure they mount an empty one14:25
desrtthey give access to subsets of it for the important stuff14:25
desrtbut no.. certainly not the whole thing14:25
seb128k14:26
desrtand we would not want to do that14:26
desrta confined app could totally destroy your session by messing around in the xdg runtime dir14:26
seb128what does dconf use the dir for?14:26
desrtstupid reasons14:26
desrtbasically, the dconf database in the user's home directory is an rcu file that gets replaced-by-renamed when there is a change14:27
desrtthere is no way to detect that without doing a syscall, though, and gsettings reads are too fast for that14:27
desrtso we put a flag file in the runtime dir and mark it when a change has occurred... each app mmaps that file... so now the check is a single memory location read...14:27
seb128ah, I see14:28
desrtthe "stupid" part is that i did it this way to avoid updating the in-place file in the user's homedir14:28
desrtbecause of....... NFS14:28
seb128so it would be safe to bindmount that subdir in a snap/flatpack14:28
desrtit was causing SIGBUS in testing...14:28
desrtunsafe and pointless14:28
desrtapplications cannot read from dconf in confinement14:28
desrtso having a flag telling them when they need to reopen the database is kinda pointless14:29
seb128right14:29
desrtunless this is part of the 'can access the entire homedir' profile, in which case, sure14:29
seb128but for today where we plug a hole to make gsettings work14:29
seb128is there an easy workaround we can do?14:29
desrtyou need access to the homedir14:29
desrtand the xdg runtime dir14:29
desrtalso: the app needs to have unconfined ability to communicate with the dbus service14:30
desrtthen ya, it should work14:30
seb128k, so we would need to bindmount the xdg runtime dir in the snap?14:30
seb128right, they are adding the dconf dbus auth to the unity7 profile14:30
desrthonestly, if we bindmount the homedir, the xdg runtime dir should go with it14:30
desrtit's basically what you might imagine something like ~/.tmp/ would be14:30
desrtie: a bunch of user-specific sockets for services go there too14:30
desrtunity7 profile?14:31
seb128desrt, https://github.com/ubuntu-core/snappy/blob/master/interfaces/builtin/unity7.go14:33
desrtah14:34
desrtnot for unity itself14:34
desrtbut for apps that run under it14:34
seb128yes14:34
seb128that's the security profile to use14:34
seb128like if you want to start a desktop app under unity7 use that profile14:34
seb128it gives access to the dbus interfaces required for appmenu etc to work14:35
desrtnod14:35
seb128Trevinho, looks like xnox SRUed upstart ;-)14:36
Trevinhoseb128: yeah, already tested and verified... Thanks xnox !!!14:36
seb128Trevinho, :-)14:37
seb128Trevinho, did you manage to get your silo reconfigured without usd btw?14:38
* Laney screams at pitti 14:57
pittiLaney: wut?15:01
Laneybos01 died?15:01
pittieww15:02
pittiLaney: meeting now, want to have a look?15:03
pittiLaney: even "nova list" is hanging15:04
pittiLaney: well, I'm still sure it'll come back before armhf catches up :)15:04
Laneypitti: pinged IS, but looks cloud-wide indeed15:06
Laneycjwatson turned up too ;-)15:07
seb128what's the channel for such issues?15:10
Laney#is-outage @ canonical or #canonical-sysadmin @ freenode if you can't get to that15:10
seb128k, thanks15:11
seb128I usually use #is15:11
seb128I didn't know about -outage15:11
LaneyI'm sure that one would work too15:11
seb128but since there is no activity on #is I assumed there was some other places15:11
seb128yeah, I just wanted to have an eye on the current conversation and was wondering what to join15:12
seb128thanks ;-)15:12
Laneyseb128 has eyes everywhere15:13
larsuEVERYWHERE15:14
larsuhi desktoppers!15:14
Laneyhttp://www.infiniteunknown.net/wp-content/uploads/2014/02/Eye-of-Sauron.png15:14
seb128hey Laney!15:14
seb128ups15:14
seb128hey larsu!15:14
pittiseb128, Laney: I always feel like getting the NSA right on my tail when I /join #is15:14
larsuLaney: that's just one eye....15:14
larsubonjour seb128!15:14
LaneyRAIE15:15
Laneyhi larsu15:15
Laneypitti: hah15:15
larsuhey Laney!15:15
Laneywhat is the good word?15:16
larsupain au chocolat?15:17
=== Guest37763 is now known as fredp
=== fredp is now known as Guest20000
LaneyTrdelník15:18
larsu?15:19
Laneyask attente15:19
larsuhi attente!15:20
LaneyI always type "libpease" instead of "libpeas"15:23
Laneywhat is this15:23
larsulibpeace15:24
attentelarsu: hey :)15:33
larsuwhat's Trdelník?15:34
attentelarsu: it's the czech equivalent of a churro. but bigger. and messier. and just as delicious :)15:34
larsuooooh15:36
* larsu brb, going to czech15:36
attente:)15:37
flexiondotorgLaney, seb128 Is gnome-panel.css actually used by Ubuntu?15:42
flexiondotorgIt share the same widgets with mate-panel, we are considering flattening this styling into one place.15:43
LaneyIf you use gnome-panel with Ambiance/Radiance, sure15:43
seb128could be by users of the gnome classic/fallback sessions15:44
flexiondotorgLaney, seb128 OK, what I thought. So combining this style in one place it not an issue providing gnome-panel support is retained?15:46
flexiondotorgWe are putting MATE specific stuff in mate-applications.css15:46
LaneySeems fine to me15:50
=== Drac0 is now known as Guest51056
seb128happyaron, is that nm-applet going anywhere?16:36
Laneysee you17:05
seb128Laney, have a good evening!17:06
a1faandyrock: yellow17:31
andyrocka1fa: hey17:31
a1fahow is it going? have you seen the bug i posted the other day17:32
andyrocka1fa: nope17:32
andyrockcan you relink?17:33
a1fayep17:33
a1fahttps://bugs.launchpad.net/ubuntu/+source/unity/+bug/158205617:33
ubot5Launchpad bug 1582056 in unity (Ubuntu) "Switching windows in Unity fails to bring program to foreground" [Undecided,New]17:33
a1fathis one was, well been bugging me since 14.04 :)17:33
andyrockyeah show desktop is broken in several ways17:40
andyrocki'll try to allocate some of my time on it17:40
willcookenight all17:54
=== mfisch is now known as Guest76268
seb128I've updated https://code.launchpad.net/~ubuntu-desktop/+junk/gnome-calculator-snap inspired by Trevinho's work on hello-unity18:35
seb128no static cache preincluded, dynamic arch definition, some extra variables defined18:35
seb128Trevinho, thanks for the work btw ;-)18:35
seb128on that note, dinner, have a good evening desktopers!18:37
Trevinhoseb128: nice to hear18:58
Trevinhoseb128: i wanted to do it too18:59
=== Guest76268 is now known as mfisch
=== ember_ is now known as ember

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!