Commit Graph

911 Commits

Author SHA1 Message Date
Maarten Maathuis 6e199bbd76 client, swindow: switch to a more convient definition of geometry
- In many places i see people correcting for border width and titlebars.
- This new definition is the equivilant of what used to be fullgeometry.
- The internal geometry is now contained to a few functions that few people ever touch.
- This should avoid confusion and make code easier.
- Also protect against several unsigned overflows.

Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Maarten Maathuis 709ae7afc7 mouse: prevent resizes of maximized windows
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Maarten Maathuis 630ef295a1 titlebar: resize client when adding/removing so total size remains the same
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Gregor Best f655e8bcf4 awful.mouse: add wibox.move()
Signed-off-by: Gregor Best <farhaven@googlemail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Julien Danjou 6816682d42 awful.client: makes fixed size client floating
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Gregor Best 27e7b4bc9b awful.mouse/widget: enable drag'n'dropping clients on tags
Signed-off-by: Gregor Best <farhaven@googlemail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Gregor Best 0235d995c2 mouse: add object_under_pointer
Signed-off-by: Gregor Best <farhaven@googlemail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:23 +01:00
koniu 53d7062917 awful.prompt: improvements to selectall
selectall argument to run():

* renders cursor selection
* is reset when anything but typing occurs
* is now independent from cur_pos == 1

Signed-off-by: koniu <gkusnierz@gmail.com>
2008-12-14 10:28:23 +01:00
Julien Danjou 26da80f90a draw: remove custom markup support
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:23 +01:00
Julien Danjou 9adf3fd869 draw: remove bg color markup, move to textbox
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:23 +01:00
Julien Danjou 8e9f0c8857 draw: remove margin markup, move to textbox widget
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:23 +01:00
Julien Danjou c3c20c4f8e client: move floating state handling to Lua
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:22 +01:00
Julien Danjou 2037a053a9 layout: move layout code to Lua
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:21 +01:00
Julien Danjou bf7bae8082 awful.client: add tiled()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 19:19:29 +01:00
Sébastien Gross 47c836de97 awful: add generic completion wrapper for awful.prompt.run()
[completion.lua.in]:
  * add generic() function for completion

[prompt.lua.in]
  * add completion_run() function as a run() wrapper with completion

kw_feeder sould return a key = value dictionnary. Completion is run against
key. Once completion is done, exe_callback(value, key) is executed.
That's the major differences between awful.prompt.run() and
 awful.prompt.completion_run

Notice: This is not thread safe but as longs as only one keygrabber could be
run who cares?

Signed-off-by: Sébastien Gross <seb-awesome@chezwam.org>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 19:19:29 +01:00
Julien Danjou e0de3b153e client: deprecate minimize in favor of minimized
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 19:19:29 +01:00
Julien Danjou 576a1e85fc client: maximize belongs to client internal
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 19:19:29 +01:00
koniu e46ae9e3c2 awful.widget: beautiful font for {tag,task}list
Beautiful themes can now set 'tasklist_font' and 'taglist_font' in
font_desc format ie. "Sans 7"

Signed-off-by: koniu <gkusnierz@gmail.com>
2008-12-12 19:19:29 +01:00
koniu 92fd31b7f5 awful.util: new function file_readable()
Signed-off-by: koniu <gkusnierz@gmail.com>
2008-12-12 19:19:28 +01:00
Julien Danjou a4254b195d dbus: add D-Bus hooks
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 16:51:41 +01:00
Julien Danjou 53a830aea1 mouse: move resize code to awful.mouse
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 16:51:41 +01:00
Julien Danjou 33c7083617 awful.tag: setmwfact() gets optional screen param
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 16:51:41 +01:00
Julien Danjou 49bb7e87b4 mouse: remove client_move, move it to awful
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 16:51:41 +01:00
Julien Danjou 4fcf48e247 widgets: remove name property
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 16:51:40 +01:00
Julien Danjou 506e453a2f remove deprecated functions
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 16:51:40 +01:00
Gregor Best 0a07e706b0 awful.widget: fix tasklist urgent background
Signed-off-by: Gregor Best <farhaven@googlemail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-10 17:36:54 +01:00
Julien Danjou a760f4b0bc awful.titlebar: do not overwrite mouse bindings on close
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-08 16:43:24 +01:00
Julien Danjou f58b9e3566 awful.widget: stop using useless closures in taglist
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-04 23:06:38 +01:00
Julien Danjou f36cb984e3 awful.widget: store buttons in tasklist
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-04 20:20:16 +01:00
Julien Danjou 77510610d2 awful.widget: tasklist need update on arrange
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-04 00:06:22 +01:00
Julien Danjou ab2502c6c6 awful.widget: update taglist on focus change
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-03 11:48:23 +01:00
Sébastien Gross f5bf5aa43d awful.prompt: Add support for KP_Return
* The numeric paddle Enter key wasn't processed

Signed-off-by: Sébastien Gross <seb-awesome@chezwam.org>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-29 09:30:28 +01:00
Michael Hofmann 3cc7843f05 awful.widget: fix iteration over removed elements
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-27 11:20:25 +01:00
Julien Danjou 5fecdc052d awful.client: fix iteration over removed elements
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-27 11:18:35 +01:00
Maarten Maathuis e6905ededb awful.client: fix minor luadoc issue
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-27 10:58:10 +01:00
Julien Danjou 41c6fbb31c awful.prompt: return true since we unregistered (FS#383)
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-24 11:56:42 +01:00
Maarten Maathuis 69f0796762 awful.client: fix luadoc syntax for visible function.
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-22 08:36:42 +01:00
Julien Danjou 6cbbd45d3a awful.widget: fix name on minimize
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-19 21:17:15 +01:00
koniu 4c031ba398 awful.prompt: add trail space in prompt_text_with_cursor()
Adds a trailing space after text if cursor position < text length to
prevent width of the widget changing particularly useful when using
'text' and 'selectall' to do eg. in-place renaming.

Sample textbox content (# space, _ cursor).

Before:
    textbox before prompt: #term#
selectall prompt textbox : #_erm   <- shorter than other cases
      after pressing end : #term_

After:
    textbox before prompt: #term#
selectall prompt textbox : #_erm#
      after pressing end : #term_

Signed-off-by: koniu <gkusnierz@gmail.com>
2008-11-19 13:00:04 +00:00
koniu b4f16ff649 awful.prompt: new arg 'selectall' in add()
If set along with 'text' (prefilled content) it will position the cursor at
the beginning of the line and and on text input (and not control keys,
arrows, etc.) will overwrite the prefilled content with the new input.

Signed-off-by: koniu <gkusnierz@gmail.com>
2008-11-19 13:21:12 +01:00
Julien Danjou 26b9c88de2 awful.widget: document taglist_squares_resize and fix
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-17 20:33:21 +01:00
koniu a9ed61589f awful.prompt: add new field 'text' to run() args
Signed-off-by: koniu <gkusnierz@gmail.com>
2008-11-17 20:21:12 +01:00
Norbert Zeh 9d2b21d25d awful.widget: allow customization of tag icon
Made changes to lib/awful/widget.lua.in to accept the following additional
customizations through theme or arguments to taglist/tasklist labeling
functions:

* args.squares_resize/theme.taglist_squares_resize (Boolean, default = true)
  If true, taglist icons are resized; otherwise, they aren't.

* args.floating_icon_align/theme.floating_icon_align (String, default = "right")
  Controls the alignment of the icon drawn in the tasklist for floating clients.

Signed-off-by: Norbert Zeh <nzeh@cs.dal.ca>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-15 10:02:46 +01:00
Ez 7a9fe19f4c awful.client: fix urgent.jumpto
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-15 09:53:21 +01:00
Julien Danjou 3ebcc1aa5a luaa: add more deprecation information
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-14 12:12:01 +01:00
Julien Danjou 292f09bb93 luaa: add support for conffile in index
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-13 15:18:41 +01:00
Julien Danjou 80f5d43631 awful.prompt: stop grabbing keyboard before calling callback
This allows execution of grabbing function.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-13 14:07:27 +01:00
Julien Danjou b9398ad51e awful.prompt: merge some keys
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-13 14:06:22 +01:00
Julien Danjou ccfb0b1935 awful.prompt add in history also on 'j' and 'm'
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-13 14:02:38 +01:00
Julien Danjou 9416bf2419 awful.prompt: fix typo
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-13 14:00:21 +01:00
Julien Danjou 2e97991a90 beautiful: merge awful.beautiful, stop registering system
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-13 11:54:23 +01:00
Espen Wiborg 8bafd24882 awful.widget: Implement taglist.label.noempty in terms of label.all
This gives .noempty lovers a share in the taglist_squares goodness.

Signed-off-by: Espen Wiborg <espenhw@grumblesmurf.org>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-13 10:48:45 +01:00
Julien Danjou cdc9d40f4a awful.titlebar: fix theme support
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-12 11:55:35 +01:00
Julien Danjou 2cafc6a1c8 awful.util: deprecate write on stderr
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-12 11:38:06 +01:00
Julien Danjou 0cddba4d82 awful.menu: store active child
This fix the menu when they are multiple submenu entries.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-10 19:09:20 +01:00
Julien Danjou e9916d34b6 awful.widget: fix tags removal
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-10 17:05:33 +01:00
Julien Danjou dc98cd915e awful.client: fix master compat
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-10 13:56:18 +01:00
Julien Danjou 36e4847dd1 themes: move theme icons to themes/
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-10 12:02:08 +01:00
Julien Danjou 2c71245388 awful.widget: check for image
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-10 10:42:19 +01:00
Julien Danjou 7108e5cb20 awful, beautiful: getimage rather belongs in beautiful
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-09 15:51:43 +01:00
Gregor Best 58693c3d7d beautiful: add get_image function
this commit adds awful.beautiful.get_image(imgspec) to retrieve an image
from a beautiful theme
2008-11-08 17:01:04 +01:00
Julien Danjou 950e9f96c5 awful.menu: fix icon widget if no image given
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-08 14:32:50 +01:00
Julien Danjou cb43b5a5bd awful.menu: rewrite to be more object compliant
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-07 15:27:51 +01:00
Julien Danjou c529c3d7ed awful.completion: doc fixes
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-07 15:27:51 +01:00
Julien Danjou e528cc7e50 awful.client: rename master to getmaster
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-07 15:27:51 +01:00
Julien Danjou 7c2a17e49f awful.beautiful: fix comments
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-07 15:27:51 +01:00
Julien Danjou 2e609e3d55 awful, tabulous: change titles
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-07 15:27:51 +01:00
koniu d4bfaa8598 awful.prompt: add underline style to in run() args
Signed-off-by: koniu <gkusnierz@gmail.com>
2008-11-06 17:07:12 +00:00
Maarten Maathuis 3cf17a9fae titlebar: generate mouse_enter and button events for the entire titlebar (and redirect them to the client)
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-05 16:48:45 +01:00
Julien Danjou 105e155606 awful.screen: enhance doc
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-04 21:09:35 +01:00
Julien Danjou c51d4d61ac awful.screen: fix focus doc
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-04 21:05:02 +01:00
Julien Danjou e0730d0da8 awful.client: deprecate swap()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-03 23:15:00 +01:00
Julien Danjou 76a77cf070 awful.client: remove dumb comment line
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-03 17:11:04 +01:00
Damien Leone d8aef41795 awful.menu: add menu_toggle parameter 2008-10-30 12:52:16 +01:00
Julien Danjou 17a6d2283e awful: fix marking
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-29 09:39:06 +01:00
Damien Leone a2f3790dce awful.menu: add a close function and fix various bugs 2008-10-27 12:30:47 +01:00
Julien Danjou 827d084dbf awful.menu: escape client name in clients menu
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-25 15:36:08 +02:00
Damien Leone 666f3c9c83 awful.menu: add custom theme and fix various bugs 2008-10-25 15:33:02 +02:00
Julien Danjou bf5001337c awful.client: rename focus and swap bydirection
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-24 20:31:18 +02:00
Damien Leone e3ea2789de awful.menu: fix screen width computation 2008-10-24 11:04:02 +02:00
Damien Leone 7750631bf2 awful.menu: prevent menus from poping outside the work area 2008-10-24 10:37:59 +02:00
Julien Danjou 9f8773ddfa awful.widget: fix taglist label without beautiful (FS#353)
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-23 17:55:38 +02:00
Damien Leone 75e6f4cb9e awful.menu: change menu parameters to use a table, add height and width parameters
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-23 15:22:10 +02:00
Julien Danjou 3005196d64 awful.titlebar: use pairs instead of ipairs
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-23 11:22:58 +02:00
Julien Danjou dc58313eee awful.menu: add a menu for listing clients
This also allows usage of images object as icons, and destroy menu on
function execution.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-23 11:19:46 +02:00
Julien Danjou 9b722181fa awful.util: add support for config dir
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-22 17:56:51 +02:00
Julien Danjou 8824d9f703 awful.menu: add support for functions
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-22 17:52:51 +02:00
Julien Danjou 25bf12868a widgets: use a geometry callback
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-22 17:32:17 +02:00
Damien Leone 4a6885e0eb awful.menu: align text when item doesn't have icon
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-22 16:25:07 +02:00
Damien Leone 4d5b43a75e awful.menu: import
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-22 15:25:20 +02:00
Julien Danjou 4eb096e236 libs: use geometry instead of coords
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-21 16:25:06 +02:00
Julien Danjou 5ab2497b43 client, screen: use geometry rather coords as keyword
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-21 15:31:52 +02:00
Julien Danjou 2a36b021d1 client: icon_name is stored and watched
This permits to update tasklist on icon name changes.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-21 15:15:28 +02:00
Julien Danjou bd47652fe0 awful.widget: tasklist to update on name changes
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-21 15:07:18 +02:00
Julien Danjou 862fe193ee Rewrite {tag,task}list in Lua.
This removes the C implementation of taglist and tasklist widgets and
use a Lua one.

This works by letting .widgets property of wiboxes to be a table with
table, and setting a special metatable on them which notify awesome on
newindex events, updating wiboxes.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-20 20:06:09 +02:00
Gregor Best 072937ec70 Various changes to awful.util and invaders
This commit changes various aspects of awful.util and invaders:

awful.util:

- added awful.util.getdir(d)
  This function takes one argument and returns a matching directory,
  as of now, only "cache" is supported. The return value is either
  $XDG_CACHE_HOME/awesome/ or $HOME/.cache/awesome/, XDG_CACHE_HOME
  takes precedence

invaders:

- renamed invaders to awesome invaders
  at two places in the sourcecode, invaders is referred to as
  "Space Invaders for Awesome". As Taiko holds the trademark for
  the term "Space Invaders", I changed both of its occurences to
  "Awesome Invaders" to avoid conflicts with the law of Japan and
  the United States of America (and possibly others)

- added support for XDG_CACHE_HOME
  this change adds support for XDG_CACHE_HOME as the cache directory
  for highscores and screenshots

- added some parameters to invaders.run()
  this change adds three parameters to invaders.run, supplied as a
  table. They are "x", "y" and "solidbg".

  "x" sets the X coordinate of the playfield
  "y" sets the Y coordinate of the playfield
  "solidbg" sets the color of the playfield background for people who
  have problems with transparency. This still looks rather hackish and
  needs to be polished

- changed startup position
  up until now, invaders always started at (100,100) on the first
  screen, now it starts centered to the screen on which the mouse cursor
  is.
2008-10-17 19:20:31 +02:00
Julien Danjou 39f50d5b06 awful.titlebar: do not build args
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-12 17:14:44 +02:00
Thomas Harning Jr 946b38147e awful.titlebar: Pull in missing dependencies and grab theme details
Modules beautiful and widget are required by the titlebar:
 * beautiful to retrieve theme details
 * widget for the buttons

Signed-off-by: Thomas Harning Jr <harningt@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-09 18:45:46 +02:00
Andrei Thorp 3c1f516758 Added swapbydirection to client.lua.in in awful.
Works similar to focus.bydirection, but swaps windows instead.
Also, added a generic local method get_client_in_direction for
use by (swap|focus)\.?bydirection.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-09 18:44:31 +02:00
Julien Danjou df843a8452 awful.placement: fix no_overlap (FS#335)
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-02 12:12:42 +02:00
Julien Danjou 683b1a9572 awful.widget: use margin instead of spaces
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-01 17:03:49 +02:00
Julien Danjou 842886b7d0 awful: add compatibility with old function names from util
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-01 16:26:30 +02:00
Julien Danjou 9dca1330c2 awful.client: maximize works in floating layout
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-01 15:05:54 +02:00
Julien Danjou 3f9b726065 awful.client: use right data array
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-01 15:00:33 +02:00
Julien Danjou da2f473386 awful.util: fix wrong variable
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-30 17:07:25 +02:00
Julien Danjou c3775199b0 awful.util: use loadfile instead of loadstring
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-30 17:00:19 +02:00
Julien Danjou da52a7b197 awful: add helper to check configuration file syntax
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-30 15:50:41 +02:00
Julien Danjou c1566f39c5 awful.prompt: add math lib
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-30 09:36:40 +02:00
Julien Danjou 6dc84a1c12 awful.prompt: fix history save
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-30 09:22:34 +02:00
Julien Danjou 8d6e2b57af awful.client: remove useless vars
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-29 19:57:04 +02:00
Julien Danjou 34647e4e75 awful: split in several modules
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-29 18:30:32 +02:00