1COMPTON(1)                    LOCAL USER COMMANDS                   COMPTON(1)
2
3
4

NAME

6       compton - a compositor for X11
7

SYNOPSIS

9       compton [OPTIONS]
10

WARNING

12       This man page may be less up-to-date than the usage text in compton
13       (compton -h).
14

DESCRIPTION

16       compton is a compositor based on Dana Jansens' version of xcompmgr
17       (which itself was written by Keith Packard). It includes some
18       improvements over the original xcompmgr, like window frame opacity and
19       inactive window transparency.
20

OPTIONS

22       -h, --help
23           Get the usage text embedded in program code, which may be more
24           up-to-date than this man page.
25
26       -d DISPLAY
27           Display to be managed.
28
29       -r, --shadow-radius=RADIUS
30           The blur radius for shadows, in pixels. (defaults to 12)
31
32       -o, --shadow-opacity=OPACITY
33           The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
34
35       -l, --shadow-offset-x=OFFSET
36           The left offset for shadows, in pixels. (defaults to -15)
37
38       -t, --shadow-offset-y=OFFSET
39           The top offset for shadows, in pixels. (defaults to -15)
40
41       -I, --fade-in-step=OPACITY_STEP
42           Opacity change between steps while fading in. (0.01 - 1.0, defaults
43           to 0.028)
44
45       -O, --fade-out-step=OPACITY_STEP
46           Opacity change between steps while fading out. (0.01 - 1.0,
47           defaults to 0.03)
48
49       -D, --fade-delta=MILLISECONDS
50           The time between steps in fade step, in milliseconds. (> 0,
51           defaults to 10)
52
53       -m, --menu-opacity=OPACITY
54           Default opacity for dropdown menus and popup menus. (0.0 - 1.0,
55           defaults to 1.0)
56
57       -c, --shadow
58           Enabled client-side shadows on windows. Note desktop windows
59           (windows with _NET_WM_WINDOW_TYPE_DESKTOP) never get shadow.
60
61       -C, --no-dock-shadow
62           Avoid drawing shadows on dock/panel windows.
63
64       -z, --clear-shadow
65           Zero the part of the shadow’s mask behind the window. Note this may
66           not work properly on ARGB windows with fully transparent areas.
67
68       -f, --fading
69           Fade windows in/out when opening/closing and when opacity changes,
70           unless --no-fading-openclose is used.
71
72       -F
73           Equals to -f. Deprecated.
74
75       -i, --inactive-opacity=OPACITY
76           Opacity of inactive windows. (0.1 - 1.0, disabled by default)
77
78       -e, --frame-opacity=OPACITY
79           Opacity of window titlebars and borders. (0.1 - 1.0, disabled by
80           default)
81
82       -G, --no-dnd-shadow
83           Don’t draw shadows on drag-and-drop windows.
84
85       -b, --daemon
86           Daemonize process. Fork to background after initialization. Causes
87           issues with certain (badly-written) drivers.
88
89       -S
90           Enable synchronous X operation (for debugging).
91
92       --show-all-xerrors
93           Show all X errors (for debugging).
94
95       --config PATH
96           Look for configuration file at the path. See CONFIGURATION FILES
97           section below for where compton looks for a configuration file by
98           default. Use /dev/null to avoid loading configuration file.
99
100       --write-pid-path PATH
101           Write process ID to a file.
102
103       --shadow-red VALUE
104           Red color value of shadow (0.0 - 1.0, defaults to 0).
105
106       --shadow-green VALUE
107           Green color value of shadow (0.0 - 1.0, defaults to 0).
108
109       --shadow-blue VALUE
110           Blue color value of shadow (0.0 - 1.0, defaults to 0).
111
112       --inactive-opacity-override
113           Let inactive opacity set by -i overrides the windows'
114           _NET_WM_OPACITY values.
115
116       --active-opacity OPACITY
117           Default opacity for active windows. (0.0 - 1.0)
118
119       --inactive-dim VALUE
120           Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
121
122       --mark-wmwin-focused
123           Try to detect WM windows (a non-override-redirect window with no
124           child that has WM_STATE) and mark them as active.
125
126       --mark-ovredir-focused
127           Mark override-redirect windows that doesn’t have a child window
128           with WM_STATE focused.
129
130       --no-fading-openclose
131           Do not fade on window open/close.
132
133       --no-fading-destroyed-argb
134           Do not fade destroyed ARGB windows with WM frame. Workaround of
135           bugs in Openbox, Fluxbox, etc.
136
137       --shadow-ignore-shaped
138           Do not paint shadows on shaped windows. Note shaped windows here
139           means windows setting its shape through X Shape extension. Those
140           using ARGB background is beyond our control. Deprecated, use
141           --shadow-exclude 'bounding_shaped' or --shadow-exclude
142           'bounding_shaped && !rounded_corners' instead.
143
144       --detect-rounded-corners
145           Try to detect windows with rounded corners and don’t consider them
146           shaped windows. The accuracy is not very high, unfortunately.
147
148       --detect-client-opacity
149           Detect _NET_WM_OPACITY on client windows, useful for window
150           managers not passing _NET_WM_OPACITY of client windows to frame
151           windows.
152
153       --refresh-rate REFRESH_RATE
154           Specify refresh rate of the screen. If not specified or 0, compton
155           will try detecting this with X RandR extension.
156
157       --vsync VSYNC_METHOD
158           Set VSync method. VSync methods currently available:
159
160none: No VSync
161
162drm: VSync with DRM_IOCTL_WAIT_VBLANK. May only work on some
163               (DRI-based) drivers.
164
165opengl: Try to VSync with SGI_video_sync OpenGL extension. Only
166               work on some drivers.
167
168opengl-oml: Try to VSync with OML_sync_control OpenGL
169               extension. Only work on some drivers.
170
171opengl-swc: Try to VSync with SGI_swap_control OpenGL
172               extension. Only work on some drivers. Works only with GLX
173               backend. Known to be most effective on many drivers. Does not
174               guarantee to control paint timing.
175
176opengl-mswc: Try to VSync with MESA_swap_control OpenGL
177               extension. Basically the same as opengl-swc above, except the
178               extension we use.
179
180           (Note some VSync methods may not be enabled at compile time.)
181
182       --vsync-aggressive
183           Attempt to send painting request before VBlank and do XFlush()
184           during VBlank. Reported to work pretty terribly. This switch may be
185           lifted out at any moment.
186
187       --alpha-step VALUE
188           X Render backend: Step for pregenerating alpha pictures. (0.01 -
189           1.0, defaults to 0.03)
190
191       --dbe
192           Enable DBE painting mode, intended to use with VSync to (hopefully)
193           eliminate tearing. Reported to have no effect, though.
194
195       --paint-on-overlay
196           Painting on X Composite overlay window instead of on root window.
197
198       --sw-opti
199           Limit compton to repaint at most once every 1 / refresh_rate second
200           to boost performance. This should not be used with --vsync
201           drm/opengl/opengl-oml as they essentially does --sw-opti's job
202           already, unless you wish to specify a lower refresh rate than the
203           actual value.
204
205       --use-ewmh-active-win
206           Use EWMH _NET_ACTIVE_WINDOW to determine currently focused window,
207           rather than listening to FocusIn/FocusOut event. Might have more
208           accuracy, provided that the WM supports it.
209
210       --respect-prop-shadow
211           Respect _COMPTON_SHADOW. This a prototype-level feature, which you
212           must not rely on.
213
214       --unredir-if-possible
215           Unredirect all windows if a full-screen opaque window is detected,
216           to maximize performance for full-screen windows. Known to cause
217           flickering when redirecting/unredirecting windows.
218           --paint-on-overlay may make the flickering less obvious.
219
220       --unredir-if-possible-delay MILLISECONDS
221           Delay before unredirecting the window, in milliseconds. Defaults to
222           0.
223
224       --unredir-if-possible-exclude CONDITION
225           Conditions of windows that shouldn’t be considered full-screen for
226           unredirecting screen.
227
228       --shadow-exclude CONDITION
229           Specify a list of conditions of windows that should have no shadow.
230
231       --fade-exclude CONDITION
232           Specify a list of conditions of windows that should not be faded.
233
234       --focus-exclude CONDITION
235           Specify a list of conditions of windows that should always be
236           considered focused.
237
238       --inactive-dim-fixed
239           Use fixed inactive dim value, instead of adjusting according to
240           window opacity.
241
242       --detect-transient
243           Use WM_TRANSIENT_FOR to group windows, and consider windows in the
244           same group focused at the same time.
245
246       --detect-client-leader
247           Use WM_CLIENT_LEADER to group windows, and consider windows in the
248           same group focused at the same time.  WM_TRANSIENT_FOR has higher
249           priority if --detect-transient is enabled, too.
250
251       --blur-background
252           Blur background of semi-transparent / ARGB windows. Bad in
253           performance, with driver-dependent behavior. The name of the switch
254           may change without prior notifications.
255
256       --blur-background-frame
257           Blur background of windows when the window frame is not opaque.
258           Implies --blur-background. Bad in performance, with
259           driver-dependent behavior. The name may change.
260
261       --blur-background-fixed
262           Use fixed blur strength rather than adjusting according to window
263           opacity.
264
265       --blur-kern MATRIX
266           Specify the blur convolution kernel, with the following format:
267
268               WIDTH,HEIGHT,ELE1,ELE2,ELE3,ELE4,ELE5...
269
270           The element in the center must not be included, it will be forever
271           1.0 or changing based on opacity, depending on whether you have
272           --blur-background-fixed. Yet the automatic adjustment of blur
273           factor may not work well with a custom blur kernel.
274
275           A 7x7 Gaussian blur kernel (sigma = 0.84089642) looks like:
276
277               --blur-kern '7,7,0.000003,0.000102,0.000849,0.001723,0.000849,0.000102,0.000003,0.000102,0.003494,0.029143,0.059106,0.029143,0.003494,0.000102,0.000849,0.029143,0.243117,0.493069,0.243117,0.029143,0.000849,0.001723,0.059106,0.493069,0.493069,0.059106,0.001723,0.000849,0.029143,0.243117,0.493069,0.243117,0.029143,0.000849,0.000102,0.003494,0.029143,0.059106,0.029143,0.003494,0.000102,0.000003,0.000102,0.000849,0.001723,0.000849,0.000102,0.000003'
278
279           May also be one of the predefined kernels: 3x3box (default),
280           5x5box, 7x7box, 3x3gaussian, 5x5gaussian, 7x7gaussian, 9x9gaussian,
281           11x11gaussian. All Gaussian kernels are generated with sigma =
282           0.84089642 . You may use the accompanied compton-convgen.py to
283           generate blur kernels.
284
285       --blur-background-exclude CONDITION
286           Exclude conditions for background blur.
287
288       --resize-damage INTEGER
289           Resize damaged region by a specific number of pixels. A positive
290           value enlarges it while a negative one shrinks it. If the value is
291           positive, those additional pixels will not be actually painted to
292           screen, only used in blur calculation, and such. (Due to technical
293           limitations, with --dbe or --glx-swap-method, those pixels will
294           still be incorrectly painted to screen.) Primarily used to fix the
295           line corruption issues of blur, in which case you should use the
296           blur radius value here (e.g. with a 3x3 kernel, you should use
297           --resize-damage 1, with a 5x5 one you use --resize-damage 2, and so
298           on). May or may not work with --glx-no-stencil. Shrinking doesn’t
299           function correctly.
300
301       --invert-color-include CONDITION
302           Specify a list of conditions of windows that should be painted with
303           inverted color. Resource-hogging, and is not well tested.
304
305       --opacity-rule OPACITY:'CONDITION'
306           Specify a list of opacity rules, in the format PERCENT:PATTERN,
307           like 50:name *= "Firefox". compton-trans is recommended over this.
308           Note we do not distinguish 100% and unset, and we don’t make any
309           guarantee about possible conflicts with other programs that set
310           _NET_WM_WINDOW_OPACITY on frame or client windows.
311
312       --shadow-exclude-reg GEOMETRY
313           Specify a X geometry that describes the region in which shadow
314           should not be painted in, such as a dock window region. Use
315           --shadow-exclude-reg x10+0-0, for example, if the 10 pixels on the
316           bottom of the screen should not have shadows painted on.
317
318       --xinerama-shadow-crop
319           Crop shadow of a window fully on a particular Xinerama screen to
320           the screen.
321
322       --backend BACKEND
323           Specify the backend to use: xrender, glx, or xr_glx_hybrid.
324           xrender is the default one.
325
326           •   xrender backend performs all rendering operations with X Render
327               extension. It is what xcompmgr uses, and is generally a safe
328               fallback when you encounter rendering artifacts or instability.
329
330           •   glx (OpenGL) backend performs all rendering operations with
331               OpenGL. It is more friendly to some VSync methods, and has
332               significantly superior performance on color inversion
333               (--invert-color-include) or blur (--blur-background). It
334               requires proper OpenGL 2.0 support from your driver and
335               hardware. You may wish to look at the GLX performance
336               optimization options below.  --xrender-sync and
337               --xrender-sync-fence might be needed on some systems to avoid
338               delay in changes of screen contents.
339
340           •   xr_glx_hybrid backend renders the updated screen contents with
341               X Render and presents it on the screen with GLX. It attempts to
342               address the rendering issues some users encountered with GLX
343               backend and enables the better VSync of GLX backends.
344               --vsync-use-glfinish might fix some rendering issues with this
345               backend.
346
347       --glx-no-stencil
348           GLX backend: Avoid using stencil buffer, useful if you don’t have a
349           stencil buffer. Might cause incorrect opacity when rendering
350           transparent content (but never practically happened) and may not
351           work with --blur-background. My tests show a 15% performance boost.
352           Recommended.
353
354       --glx-copy-from-front
355           GLX backend: Copy unmodified regions from front buffer instead of
356           redrawing them all. My tests with nvidia-drivers show a 10%
357           decrease in performance when the whole screen is modified, but a
358           20% increase when only 1/4 is. My tests on nouveau show terrible
359           slowdown. Useful with --glx-swap-method, as well.
360
361       --glx-use-copysubbuffermesa
362           GLX backend: Use MESA_copy_sub_buffer to do partial screen update.
363           My tests on nouveau shows a 200% performance boost when only 1/4 of
364           the screen is updated. May break VSync and is not available on some
365           drivers. Overrides --glx-copy-from-front.
366
367       --glx-no-rebind-pixmap
368           GLX backend: Avoid rebinding pixmap on window damage. Probably
369           could improve performance on rapid window content changes, but is
370           known to break things on some drivers (LLVMpipe, xf86-video-intel,
371           etc.). Recommended if it works.
372
373       --glx-swap-method undefined/exchange/copy/3/4/5/6/buffer-age
374           GLX backend: GLX buffer swap method we assume. Could be undefined
375           (0), copy (1), exchange (2), 3-6, or buffer-age (-1).  undefined is
376           the slowest and the safest, and the default value.  copy is
377           fastest, but may fail on some drivers, 2-6 are gradually slower but
378           safer (6 is still faster than 0). Usually, double buffer means 2,
379           triple buffer means 3.  buffer-age means auto-detect using
380           GLX_EXT_buffer_age, supported by some drivers. Useless with
381           --glx-use-copysubbuffermesa. Partially breaks --resize-damage.
382           Defaults to undefined.
383
384       --glx-use-gpushader4
385           GLX backend: Use GL_EXT_gpu_shader4 for some optimization on blur
386           GLSL code. My tests on GTX 670 show no noticeable effect.
387
388       --xrender-sync
389           Attempt to synchronize client applications' draw calls with
390           XSync(), used on GLX backend to ensure up-to-date window content is
391           painted.
392
393       --xrender-sync-fence
394           Additionally use X Sync fence to sync clients' draw calls. Needed
395           on nvidia-drivers with GLX backend for some users. May be disabled
396           at compile time with NO_XSYNC=1.
397
398       --glx-fshader-win SHADER
399           GLX backend: Use specified GLSL fragment shader for rendering
400           window contents. See compton-default-fshader-win.glsl and
401           compton-fake-transparency-fshader-win.glsl in the source tree for
402           examples.
403
404       --force-win-blend
405           Force all windows to be painted with blending. Useful if you have a
406           --glx-fshader-win that could turn opaque pixels transparent.
407
408       --dbus
409           Enable remote control via D-Bus. See the D-BUS API section below
410           for more details.
411
412       --benchmark CYCLES
413           Benchmark mode. Repeatedly paint until reaching the specified
414           cycles.
415
416       --benchmark-wid WINDOW_ID
417           Specify window ID to repaint in benchmark mode. If omitted or is 0,
418           the whole screen is repainted.
419

FORMAT OF CONDITIONS

421       Some options accept a condition string to match certain windows. A
422       condition string is formed by one or more conditions, joined by logical
423       operators.
424
425       A condition with "exists" operator looks like this:
426
427           <NEGATION> <TARGET> <CLIENT/FRAME> [<INDEX>] : <FORMAT> <TYPE>
428
429       With equals operator it looks like:
430
431           <NEGATION> <TARGET> <CLIENT/FRAME> [<INDEX>] : <FORMAT> <TYPE> <NEGATION> <OP QUALIFIER> <MATCH TYPE> = <PATTERN>
432
433       With greater-than/less-than operators it looks like:
434
435           <NEGATION> <TARGET> <CLIENT/FRAME> [<INDEX>] : <FORMAT> <TYPE> <NEGATION> <OPERATOR> <PATTERN>
436
437       NEGATION (optional) is one or more exclamation marks;
438
439       TARGET is either a predefined target name, or the name of a window
440       property to match. Supported predefined targets are id, x, y, x2 (x +
441       widthb), y2, width, height, widthb (width + 2 * border_width), heightb,
442       override_redirect, argb (whether the window has an ARGB visual),
443       focused, wmwin (whether the window looks like a WM window, i.e. has no
444       child window with WM_STATE and is not override-redirected),
445       bounding_shaped, rounded_corners (requires --detect-rounded-corners),
446       client (ID of client window), window_type (window type in string),
447       leader (ID of window leader), name, class_g (= WM_CLASS[1]), class_i (=
448       WM_CLASS[0]), and role.
449
450       CLIENT/FRAME is a single @ if the window attribute should be be looked
451       up on client window, nothing if on frame window;
452
453       INDEX (optional) is the index number of the property to look up. For
454       example, [2] means look at the third value in the property. Do not
455       specify it for predefined targets.
456
457       FORMAT (optional) specifies the format of the property, 8, 16, or 32.
458       On absence we use format X reports. Do not specify it for predefined or
459       string targets.
460
461       TYPE is a single character representing the type of the property to
462       match for: c for CARDINAL, a for ATOM, w for WINDOW, d for DRAWABLE, s
463       for STRING (and any other string types, such as UTF8_STRING). Do not
464       specify it for predefined targets.
465
466       OP QUALIFIER (optional), applicable only for equals operator, could be
467       ? (ignore-case).
468
469       MATCH TYPE (optional), applicable only for equals operator, could be
470       nothing (exact match), * (match anywhere), ^ (match from start), %
471       (wildcard), or ~ (PCRE regular expression).
472
473       OPERATOR is one of = (equals), <, >, <=, =>, or nothing (exists).
474       Exists operator checks whether a property exists on a window (but for
475       predefined targets, exists means != 0 then).
476
477       PATTERN is either an integer or a string enclosed by single or double
478       quotes. Python-3-style escape sequences and raw string are supported in
479       the string format.
480
481       Supported logical operators are && (and) and || (or). && has higher
482       precedence than ||, left-to-right associativity. Use parentheses to
483       change precedence.
484
485       Examples:
486
487           # If the window is focused
488           focused
489           focused = 1
490           # If the window is not override-redirected
491           !override_redirect
492           override_redirect = false
493           override_redirect != true
494           override_redirect != 1
495           # If the window is a menu
496           window_type *= "menu"
497           _NET_WM_WINDOW_TYPE@:a *= "MENU"
498           # If the window name contains "Firefox", ignore case
499           name *?= "Firefox"
500           _NET_WM_NAME@:s *?= "Firefox"
501           # If the window name ends with "Firefox"
502           name %= "*Firefox"
503           name ~= "Firefox$"
504           # If the window has a property _COMPTON_SHADOW with value 0, type CARDINAL,
505           # format 32, value 0, on its frame window
506           _COMPTON_SHADOW:32c = 0
507           # If the third value of _NET_FRAME_EXTENTS is less than 20, or there's no
508           # _NET_FRAME_EXTENTS property on client window
509           _NET_FRAME_EXTENTS@[2]:32c < 20 || !_NET_FRAME_EXTENTS@:32c
510           # The pattern here will be parsed as "dd4"
511           name = "\x64\x64\o64"
512           # The pattern here will be parsed as "\x64\x64\x64"
513           name = r"\x64\x64\o64"
514

LEGACY FORMAT OF CONDITIONS

516       This is the old condition format we once used. Support of this format
517       might be removed in the future.
518
519           condition = TARGET:TYPE[FLAGS]:PATTERN
520
521       TARGET is one of "n" (window name), "i" (window class instance), "g"
522       (window general class), and "r" (window role).
523
524       TYPE is one of "e" (exact match), "a" (match anywhere), "s" (match from
525       start), "w" (wildcard), and "p" (PCRE regular expressions, if compiled
526       with the support).
527
528       FLAGS could be a series of flags. Currently the only defined flag is
529       "i" (ignore case).
530
531       PATTERN is the actual pattern string.
532

CONFIGURATION FILES

534       compton could read from a configuration file if libconfig support is
535       compiled in. If --config is not used, compton will seek for a
536       configuration file in $XDG_CONFIG_HOME/compton.conf
537       (~/.config/compton.conf, usually), then ~/.compton.conf, then
538       compton.conf under $XDG_CONFIG_DIRS (often /etc/xdg/compton.conf).
539
540       compton uses general libconfig configuration file format. A sample
541       configuration file is available as compton.sample.conf in the source
542       tree. Most commandline switches each could be replaced with an option
543       in configuration file, thus documented above. Window-type-specific
544       settings are exposed only in configuration file and has the following
545       format:
546
547           wintypes:
548           {
549             WINDOW_TYPE = { fade = BOOL; shadow = BOOL; opacity = FLOAT; focus = BOOL; };
550           };
551
552       WINDOW_TYPE is one of the 15 window types defined in EWMH standard:
553       "unknown", "desktop", "dock", "toolbar", "menu", "utility", "splash",
554       "dialog", "normal", "dropdown_menu", "popup_menu", "tooltip", "notify",
555       "combo", and "dnd". "fade" and "shadow" controls window-type-specific
556       shadow and fade settings. "opacity" controls default opacity of the
557       window type. "focus" controls whether the window of this type is to be
558       always considered focused. (By default, all window types except
559       "normal" and "dialog" has this on.)
560

SIGNALS

562       •   compton reinitializes itself upon receiving SIGUSR1.
563

D-BUS API

565       It’s possible to control compton via D-Bus messages, by running compton
566       with --dbus and send messages to com.github.chjj.compton.<DISPLAY>.
567       <DISPLAY> is the display used by compton, with all non-alphanumeric
568       characters transformed to underscores. For DISPLAY=:0.0 you should use
569       com.github.chjj.compton._0_0, for example.
570
571       The D-Bus methods and signals are not yet stable, thus undocumented
572       right now.
573

EXAMPLES

575       •   Disable configuration file parsing:
576
577               $ compton --config /dev/null
578
579       •   Run compton with client-side shadow and fading, disable shadow on
580           dock windows and drag-and-drop windows:
581
582               $ compton -cCGf
583
584       •   Same thing as above, plus making inactive windows 80% transparent,
585           making frame 80% transparent, don’t fade on window open/close,
586           enable software optimization, and fork to background:
587
588               $ compton -bcCGf -i 0.8 -e 0.8 --no-fading-openclose --sw-opti
589
590       •   Draw white shadows:
591
592               $ compton -c --shadow-red 1 --shadow-green 1 --shadow-blue 1
593
594       •   Avoid drawing shadows on wbar window:
595
596               $ compton -c --shadow-exclude 'class_g = "wbar"'
597
598       •   Enable OpenGL SGI_swap_control VSync with GLX backend:
599
600               $ compton --backend glx --vsync opengl-swc
601

BUGS

603       Please report any you find to https://github.com/chjj/compton .
604

AUTHORS

606       xcompmgr, originally written by Keith Packard, with contributions from
607       Matthew Allum, Eric Anholt, Dan Doel, Thomas Luebking, Matthew Hawn,
608       Ely Levy, Phil Blundell, and Carl Worth. Compton by Christopher
609       Jeffrey, based on Dana Jansens' original work, with contributions from
610       Richard Grenville.
611

RESOURCES

613       Homepage: https://github.com/chjj/compton
614

SEE ALSO

616       xcompmgr(1), compton-trans(1)
617
618
619
620compton nightly-20141124          01/19/2022                        COMPTON(1)
Impressum