rename: replace "compton" in the codebase

leftovers:

1) config file path. Has to implement compatibility functionalities before
  we can change it.

2) links in man pages. Has to migrate the repo first.

3) _COMPTON_SHADOW, it has become a defacto standard, so we have to keep
   supporting it.

4) dbus names, undecided whether we should/could change it.

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2019-10-23 19:27:30 +01:00
parent ed6a96dae9
commit 8ddbebb5d1
No known key found for this signature in database
GPG Key ID: 37C999F617EA1A47
33 changed files with 172 additions and 139 deletions

View File

@ -54,10 +54,10 @@ jobs:
command: ninja -vC build test command: ninja -vC build test
- run: - run:
name: test config file parsing name: test config file parsing
command: xvfb-run -s "-screen 0 640x480x24" build/src/compton --config compton.sample.conf --vsync=none --diagnostics command: xvfb-run -s "-screen 0 640x480x24" build/src/picom --config picom.sample.conf --no-vsync --diagnostics
- run: - run:
name: run testsuite name: run testsuite
command: tests/run_tests.sh build/src/compton command: tests/run_tests.sh build/src/picom
- run: - run:
name: generate coverage reports name: generate coverage reports
command: cd build; find -name '*.gcno' -exec gcov -pb {} + command: cd build; find -name '*.gcno' -exec gcov -pb {} +

View File

@ -13,12 +13,12 @@
### Environment ### Environment
<!-- Tell us something about the desktop environment you are using, for example: i3-gaps, Gnome Shell, etc. --> <!-- Tell us something about the desktop environment you are using, for example: i3-gaps, Gnome Shell, etc. -->
### Compton version ### picom version
<!-- Put the output of `compton --version` here. --> <!-- Put the output of `compton --version` or `picom --version` here. -->
<!-- If you are running compton v4 or later, please also include the output of `compton --diagnostics` --> <!-- If you are running compton v4 or later, please also include the output of `compton --diagnostics` or `picom --diagnostics` -->
<!-- Example: v1 --> <!-- Example: v1 -->
### Compton configuration: ### Configuration:
``` ```
// Paste your configuration here // Paste your configuration here
``` ```
@ -38,12 +38,12 @@
### Stack trace ### Stack trace
<!-- <!--
If compton crashes, please make sure your compton is built with debug info, and provide a stack trace of compton when it crashed. If the compositor crashes, please make sure you built it with debug info, and provide a stack trace captured when it crashed.
Note, when compton crashes in a debugger, your screen might look frozen. But gdb will likely still handle your input if it is focused. Note, when the compositor crashes in a debugger, your screen might look frozen. But gdb will likely still handle your input if it is focused.
Often you can use 'bt' and press enter to get the stack trace, then 'q', enter, 'y', enter to quit gdb. Often you can use 'bt' and press enter to get the stack trace, then 'q', enter, 'y', enter to quit gdb.
--> -->
<!-- Or, you can enable core dump, and upload the core file and the compton executable here. --> <!-- Or, you can enable core dump, and upload the core file with the corresponding executable here. -->
### Other details ### Other details
<!-- If your problem is visual, you are encouraged to record a short video when the problem occurs and link to it here. --> <!-- If your problem is visual, you are encouraged to record a short video when the problem occurs and link to it here. -->

View File

@ -1,28 +1,32 @@
#!/bin/sh #!/bin/sh
# #
# compton-trans # picom-trans
# transset in a bash script # transset in a bash script
# Copyright (c) 2011-2012, Christopher Jeffrey # Copyright (c) 2011-2012, Christopher Jeffrey
# #
# Usage: # Usage:
# $ compton-trans [options] [+|-]opacity # $ picom-trans [options] [+|-]opacity
# By window id # By window id
# $ compton-trans -w "$WINDOWID" 75 # $ picom-trans -w "$WINDOWID" 75
# By name # By name
# $ compton-trans -n "urxvt" 75 # $ picom-trans -n "urxvt" 75
# By current window # By current window
# $ compton-trans -c 75 # $ picom-trans -c 75
# By selection # By selection
# $ compton-trans 75 # $ picom-trans 75
# $ compton-trans -s 75 # $ picom-trans -s 75
# Increment current window 5% # Increment current window 5%
# $ compton-trans -c +5 # $ picom-trans -c +5
# Delete current window's opacity # Delete current window's opacity
# $ compton-trans -c --delete # $ picom-trans -c --delete
# Reset all windows # Reset all windows
# $ compton-trans --reset # $ picom-trans --reset
case "$0" in
*compton-trans*) echo "Warning: compton has been renamed, please use picom-trans instead" >& 2;;
esac
# "command" is a shell built-in, faster than "which" # "command" is a shell built-in, faster than "which"
if test -z "$(command -v xprop)" -o -z "$(command -v xwininfo)"; then if test -z "$(command -v xprop)" -o -z "$(command -v xwininfo)"; then
@ -51,8 +55,8 @@ done
# This takes into account the fact that getopts stops on # This takes into account the fact that getopts stops on
# any argument it doesn't recognize or errors on. This # any argument it doesn't recognize or errors on. This
# allows for things like `compton-trans -5` as well # allows for things like `picom-trans -5` as well
# as `compton-trans -c +5 -s` (contrived example). # as `picom-trans -c +5 -s` (contrived example).
while test $# -gt 0; do while test $# -gt 0; do
# Reset option index # Reset option index
OPTIND=1 OPTIND=1

View File

@ -1,10 +1,10 @@
mans = ['compton.1', 'compton-trans.1'] mans = ['picom.1', 'picom-trans.1']
if get_option('with_docs') if get_option('with_docs')
a2x = find_program('a2x') a2x = find_program('a2x')
foreach m : mans foreach m : mans
custom_target(m, output: [m], input: [m+'.asciidoc'], custom_target(m, output: [m], input: [m+'.asciidoc'],
command: [a2x, '-a', command: [a2x, '-a',
'compton-version='+version, 'picom-version='+version,
'--format', 'manpage', '@INPUT@', '-D', '--format', 'manpage', '@INPUT@', '-D',
meson.current_build_dir()], meson.current_build_dir()],
install: true, install_dir: 'share/man/man1/') install: true, install_dir: 'share/man/man1/')

View File

@ -1,23 +1,23 @@
compton-trans(1) picom-trans(1)
================ ================
:doctype: manpage :doctype: manpage
:man source: compton :man source: picom
:man version: {compton-version} :man version: {picom-version}
:man manual: User Commands :man manual: User Commands
NAME NAME
---- ----
compton-trans - an opacity setter tool picom-trans - an opacity setter tool
SYNOPSIS SYNOPSIS
-------- --------
*compton-trans* [-w 'WINDOW_ID'] [-n 'WINDOW_NAME'] [-c] [-s] 'OPACITY' *picom-trans* [-w 'WINDOW_ID'] [-n 'WINDOW_NAME'] [-c] [-s] 'OPACITY'
DESCRIPTION DESCRIPTION
----------- -----------
*compton-trans* is a bash script that sets '_NET_WM_WINDOW_OPACITY' attribute of a window using standard X11 command-line utilities, including *xprop*(1) and *xwininfo*(1). It is similar to *transset*(1) or *transset-df*(1). *picom-trans* is a bash script that sets '_NET_WM_WINDOW_OPACITY' attribute of a window using standard X11 command-line utilities, including *xprop*(1) and *xwininfo*(1). It is similar to *transset*(1) or *transset-df*(1).
OPTIONS OPTIONS
------- -------
@ -42,37 +42,37 @@ EXAMPLES
* Set the opacity of the window with specific window ID to 75%: * Set the opacity of the window with specific window ID to 75%:
+ +
------------ ------------
compton-trans -w "$WINDOWID" 75 picom-trans -w "$WINDOWID" 75
------------ ------------
* Set the opacity of the window with the name "urxvt" to 75%: * Set the opacity of the window with the name "urxvt" to 75%:
+ +
------------ ------------
compton-trans -n "urxvt" 75 picom-trans -n "urxvt" 75
------------ ------------
* Set current window to opacity of 75%: * Set current window to opacity of 75%:
+ +
------------ ------------
compton-trans -c 75 picom-trans -c 75
------------ ------------
* Select target window and set opacity to 75%: * Select target window and set opacity to 75%:
+ +
------------ ------------
compton-trans -s 75 picom-trans -s 75
------------ ------------
* Increment opacity of current active window by 5%: * Increment opacity of current active window by 5%:
+ +
------------ ------------
compton-trans -c +5 picom-trans -c +5
------------ ------------
* Decrement opacity of current active window by 5%: * Decrement opacity of current active window by 5%:
+ +
------------ ------------
compton-trans -c -- -5 picom-trans -c -- -5
------------ ------------
BUGS BUGS
@ -81,4 +81,4 @@ Please submit bug reports to <https://github.com/yshui/compton>.
SEE ALSO SEE ALSO
-------- --------
link:compton.1.html[*compton*(1)], *xprop*(1), *xwininfo*(1) link:picom.1.html[*picom*(1)], *xprop*(1), *xwininfo*(1)

View File

@ -1,21 +1,21 @@
compton(1) picom(1)
========== ==========
:doctype: manpage :doctype: manpage
:man source: compton :man source: picom
:man version: {compton-version} :man version: {picom-version}
:man manual: User Commands :man manual: User Commands
NAME NAME
---- ----
compton - a compositor for X11 picom - a compositor for X11
SYNOPSIS SYNOPSIS
-------- --------
*compton* ['OPTIONS'] *picom* ['OPTIONS']
DESCRIPTION DESCRIPTION
----------- -----------
compton is a compositor based on Dana Jansens' version of xcompmgr (which itself was written by Keith Packard). It includes some improvements over the original xcompmgr, like window frame opacity and inactive window transparency. picom is a compositor based on Dana Jansens' version of xcompmgr (which itself was written by Keith Packard). It includes some improvements over the original xcompmgr, like window frame opacity and inactive window transparency.
OPTIONS OPTIONS
------- -------
@ -83,7 +83,7 @@ OPTIONS
Show all X errors (for debugging). Show all X errors (for debugging).
*--config* 'PATH':: *--config* 'PATH'::
Look for configuration file at the path. See *CONFIGURATION FILES* section below for where compton looks for a configuration file by default. Use `/dev/null` to avoid loading configuration file. Look for configuration file at the path. See *CONFIGURATION FILES* section below for where picom looks for a configuration file by default. Use `/dev/null` to avoid loading configuration file.
*--write-pid-path* 'PATH':: *--write-pid-path* 'PATH'::
Write process ID to a file. Write process ID to a file.
@ -128,13 +128,13 @@ OPTIONS
Detect '_NET_WM_OPACITY' on client windows, useful for window managers not passing '_NET_WM_OPACITY' of client windows to frame windows. Detect '_NET_WM_OPACITY' on client windows, useful for window managers not passing '_NET_WM_OPACITY' of client windows to frame windows.
*--refresh-rate* 'REFRESH_RATE':: *--refresh-rate* 'REFRESH_RATE'::
Specify refresh rate of the screen. If not specified or 0, compton will try detecting this with X RandR extension. Specify refresh rate of the screen. If not specified or 0, picom will try detecting this with X RandR extension.
*--vsync*, *--no-vsync*:: *--vsync*, *--no-vsync*::
Enable/disable VSync. Enable/disable VSync.
*--sw-opti*:: *--sw-opti*::
Limit compton to repaint at most once every 1 / 'refresh_rate' second to boost performance. This should not be used with *--vsync* drm/opengl/opengl-oml as they essentially does *--sw-opti*'s job already, unless you wish to specify a lower refresh rate than the actual value. Limit picom to repaint at most once every 1 / 'refresh_rate' second to boost performance. This should not be used with *--vsync* drm/opengl/opengl-oml as they essentially does *--sw-opti*'s job already, unless you wish to specify a lower refresh rate than the actual value.
*--use-ewmh-active-win*:: *--use-ewmh-active-win*::
Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, provided that the WM supports it. Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window, rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy, provided that the WM supports it.
@ -209,7 +209,7 @@ May also be one of the predefined kernels: `3x3box` (default), `5x5box`, `7x7box
Specify a list of conditions of windows that should be painted with inverted color. Resource-hogging, and is not well tested. Specify a list of conditions of windows that should be painted with inverted color. Resource-hogging, and is not well tested.
*--opacity-rule* 'OPACITY':'CONDITION':: *--opacity-rule* 'OPACITY':'CONDITION'::
Specify a list of opacity rules, in the format `PERCENT:PATTERN`, like `50:name *= "Firefox"`. compton-trans is recommended over this. Note we don't make any guarantee about possible conflicts with other programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows. Specify a list of opacity rules, in the format `PERCENT:PATTERN`, like `50:name *= "Firefox"`. picom-trans is recommended over this. Note we don't make any guarantee about possible conflicts with other programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
*--shadow-exclude-reg* 'GEOMETRY':: *--shadow-exclude-reg* 'GEOMETRY'::
Specify a X geometry that describes the region in which shadow should not be painted in, such as a dock window region. Use `--shadow-exclude-reg x10+0-0`, for example, if the 10 pixels on the bottom of the screen should not have shadows painted on. Specify a X geometry that describes the region in which shadow should not be painted in, such as a dock window region. Use `--shadow-exclude-reg x10+0-0`, for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
@ -236,7 +236,7 @@ May also be one of the predefined kernels: `3x3box` (default), `5x5box`, `7x7box
Disable the use of damage information. This cause the whole screen to be redrawn everytime, instead of the part of the screen has actually changed. Potentially degrades the performance, but might fix some artifacts. Disable the use of damage information. This cause the whole screen to be redrawn everytime, instead of the part of the screen has actually changed. Potentially degrades the performance, but might fix some artifacts.
*--xrender-sync-fence*:: *--xrender-sync-fence*::
Use X Sync fence to sync clients' draw calls, to make sure all draw calls are finished before compton starts drawing. Needed on nvidia-drivers with GLX backend for some users. Use X Sync fence to sync clients' draw calls, to make sure all draw calls are finished before picom starts drawing. Needed on nvidia-drivers with GLX backend for some users.
*--glx-fshader-win* 'SHADER':: *--glx-fshader-win* 'SHADER'::
GLX backend: Use specified GLSL fragment shader for rendering window contents. See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` in the source tree for examples. GLX backend: Use specified GLSL fragment shader for rendering window contents. See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl` in the source tree for examples.
@ -342,9 +342,9 @@ This is the old condition format we once used. Support of this format might be r
CONFIGURATION FILES CONFIGURATION FILES
------------------- -------------------
compton could read from a configuration file if libconfig support is compiled in. If *--config* is not used, compton will seek for a configuration file in `$XDG_CONFIG_HOME/compton.conf` (`~/.config/compton.conf`, usually), then `~/.compton.conf`, then `compton.conf` under `$XDG_CONFIG_DIRS` (often `/etc/xdg/compton.conf`). picom could read from a configuration file if libconfig support is compiled in. If *--config* is not used, picom will seek for a configuration file in `$XDG_CONFIG_HOME/compton.conf` (`~/.config/compton.conf`, usually), then `~/.compton.conf`, then `compton.conf` under `$XDG_CONFIG_DIRS` (often `/etc/xdg/compton.conf`).
compton uses general libconfig configuration file format. A sample configuration file is available as `compton.sample.conf` in the source tree. Most of commandline switches can be used as options in configuration file as well. For example, *--vsync* option documented above can be set in the configuration file using `vsync = `. Command line options will always overwrite the settings in the configuration file. picom uses general libconfig configuration file format. A sample configuration file is available as `compton.sample.conf` in the source tree. Most of commandline switches can be used as options in configuration file as well. For example, *--vsync* option documented above can be set in the configuration file using `vsync = `. Command line options will always overwrite the settings in the configuration file.
Window-type-specific settings are exposed only in configuration file and has the following format: Window-type-specific settings are exposed only in configuration file and has the following format:
@ -406,12 +406,12 @@ Available options of the 'blur' section are: ::
SIGNALS SIGNALS
------- -------
* compton reinitializes itself upon receiving `SIGUSR1`. * picom reinitializes itself upon receiving `SIGUSR1`.
D-BUS API D-BUS API
--------- ---------
It's possible to control compton via D-Bus messages, by running compton with *--dbus* and send messages to `com.github.chjj.compton.<DISPLAY>`. `<DISPLAY>` is the display used by compton, with all non-alphanumeric characters transformed to underscores. For `DISPLAY=:0.0` you should use `com.github.chjj.compton._0_0`, for example. It's possible to control picom via D-Bus messages, by running picom with *--dbus* and send messages to `com.github.chjj.compton.<DISPLAY>`. `<DISPLAY>` is the display used by picom, with all non-alphanumeric characters transformed to underscores. For `DISPLAY=:0.0` you should use `com.github.chjj.compton._0_0`, for example.
The D-Bus methods and signals are not yet stable, thus undocumented right now. The D-Bus methods and signals are not yet stable, thus undocumented right now.
@ -421,37 +421,37 @@ EXAMPLES
* Disable configuration file parsing: * Disable configuration file parsing:
+ +
------------ ------------
$ compton --config /dev/null $ picom --config /dev/null
------------ ------------
* Run compton with client-side shadow and fading, disable shadow on dock windows and drag-and-drop windows: * Run picom with client-side shadow and fading, disable shadow on dock windows and drag-and-drop windows:
+ +
------------ ------------
$ compton -cCGf $ picom -cCGf
------------ ------------
* Same thing as above, plus making inactive windows 80% transparent, making frame 80% transparent, don't fade on window open/close, enable software optimization, and fork to background: * Same thing as above, plus making inactive windows 80% transparent, making frame 80% transparent, don't fade on window open/close, enable software optimization, and fork to background:
+ +
------------ ------------
$ compton -bcCGf -i 0.8 -e 0.8 --no-fading-openclose --sw-opti $ picom -bcCGf -i 0.8 -e 0.8 --no-fading-openclose --sw-opti
------------ ------------
* Draw white shadows: * Draw white shadows:
+ +
------------ ------------
$ compton -c --shadow-red 1 --shadow-green 1 --shadow-blue 1 $ picom -c --shadow-red 1 --shadow-green 1 --shadow-blue 1
------------ ------------
* Avoid drawing shadows on wbar window: * Avoid drawing shadows on wbar window:
+ +
------------ ------------
$ compton -c --shadow-exclude 'class_g = "wbar"' $ picom -c --shadow-exclude 'class_g = "wbar"'
------------ ------------
* Enable VSync with GLX backend: * Enable VSync with GLX backend:
+ +
------------ ------------
$ compton --backend glx --vsync $ picom --backend glx --vsync
------------ ------------
BUGS BUGS
@ -466,4 +466,4 @@ Homepage: <https://github.com/yshui/compton>
SEE ALSO SEE ALSO
-------- --------
*xcompmgr*(1), link:compton-trans.html[*compton-trans*(1)] *xcompmgr*(1), link:picom-trans.html[*picom-trans*(1)]

View File

@ -1,4 +1,4 @@
project('compton', 'c', version: '7', project('picom', 'c', version: '7',
default_options: ['c_std=c11']) default_options: ['c_std=c11'])
cc = meson.get_compiler('c') cc = meson.get_compiler('c')
@ -43,7 +43,7 @@ if get_option('modularize')
add_global_arguments(['-fmodules', add_global_arguments(['-fmodules',
'-fmodule-map-file='+ '-fmodule-map-file='+
meson.current_source_dir()+ meson.current_source_dir()+
'/src/compton.modulemap'], '/src/picom.modulemap'],
language: 'c') language: 'c')
endif endif
@ -69,9 +69,12 @@ test_h_dep = subproject('test.h').get_variable('test_h_dep')
subdir('src') subdir('src')
subdir('man') subdir('man')
install_data('bin/compton-trans', install_dir: get_option('bindir')) install_data('bin/picom-trans', install_dir: get_option('bindir'))
install_data('compton.desktop', install_dir: 'share/applications') install_data('compton.desktop', install_dir: 'share/applications')
install_data('picom.desktop', install_dir: 'share/applications')
install_data('media/icons/48x48/compton.png', install_data('media/icons/48x48/compton.png',
install_dir: 'share/icons/hicolor/48x48/apps') install_dir: 'share/icons/hicolor/48x48/apps')
install_data('media/compton.svg', install_data('media/compton.svg',
install_dir: 'share/icons/hicolor/scalable/apps') install_dir: 'share/icons/hicolor/scalable/apps')
meson.add_install_script('meson/install.sh')

11
meson/install.sh Normal file
View File

@ -0,0 +1,11 @@
#!/bin/sh
if [ ! -e "${MESON_INSTALL_DESTDIR_PREFIX}/bin/compton" ]; then
echo "Linking picom to ${MESON_INSTALL_DESTDIR_PREFIX}/bin/compton"
ln -s picom "${MESON_INSTALL_DESTDIR_PREFIX}/bin/compton"
fi
if [ ! -e "${MESON_INSTALL_DESTDIR_PREFIX}/bin/compton-trans" ]; then
echo "Linking picom-trans to ${MESON_INSTALL_DESTDIR_PREFIX}/bin/compton-trans"
ln -s picom-trans "${MESON_INSTALL_DESTDIR_PREFIX}/bin/compton-trans"
fi

View File

@ -1,4 +1,4 @@
option('sanitize', type: 'boolean', value: false, description: 'Compile compton with sanitizers') option('sanitize', type: 'boolean', value: false, description: 'Build with sanitizers enabled (deprecated)')
option('config_file', type: 'boolean', value: true, description: 'Enable config file support') option('config_file', type: 'boolean', value: true, description: 'Enable config file support')
option('regex', type: 'boolean', value: true, description: 'Enable regex support in window conditions') option('regex', type: 'boolean', value: true, description: 'Enable regex support in window conditions')

11
picom.desktop Normal file
View File

@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=picom
GenericName=X compositor
Comment=A X compositor
Categories=Utility;
Keywords=compositor;composite manager;window effects;transparency;opacity;
TryExec=picom
Exec=picom
# Thanks to quequotion for providing this file!

View File

@ -220,7 +220,7 @@ struct backend_operations {
/// Let the backend hook into the event handling queue /// Let the backend hook into the event handling queue
/// Not implemented yet /// Not implemented yet
void (*set_ready_callback)(backend_t *, backend_ready_callback_t cb); void (*set_ready_callback)(backend_t *, backend_ready_callback_t cb);
/// Called right after compton has handled its events. /// Called right after the core has handled its events.
/// Not implemented yet /// Not implemented yet
void (*handle_events)(backend_t *); void (*handle_events)(backend_t *);
// =========== Misc ============ // =========== Misc ============

View File

@ -50,7 +50,7 @@ struct gl_blur_context {
static GLint glGetUniformLocationChecked(GLuint p, const char *name) { static GLint glGetUniformLocationChecked(GLuint p, const char *name) {
auto ret = glGetUniformLocation(p, name); auto ret = glGetUniformLocation(p, name);
if (ret < 0) { if (ret < 0) {
log_error("Failed to get location of uniform '%s'. compton might not " log_error("Failed to get location of uniform '%s'. the compositor might not "
"work correctly.", "work correctly.",
name); name);
} }

View File

@ -26,7 +26,7 @@
#include "backend/gl/glx.h" #include "backend/gl/glx.h"
#include "common.h" #include "common.h"
#include "compiler.h" #include "compiler.h"
#include "compton.h" #include "picom.h"
#include "config.h" #include "config.h"
#include "log.h" #include "log.h"
#include "region.h" #include "region.h"
@ -109,7 +109,7 @@ struct glx_fbconfig_info *glx_find_fbconfig(Display *dpy, int screen, struct xvi
glXGetFBConfigAttribChecked(dpy, cfg[i], GLX_BIND_TO_TEXTURE_RGB_EXT, &rgb); glXGetFBConfigAttribChecked(dpy, cfg[i], GLX_BIND_TO_TEXTURE_RGB_EXT, &rgb);
glXGetFBConfigAttribChecked(dpy, cfg[i], GLX_BIND_TO_TEXTURE_RGBA_EXT, &rgba); glXGetFBConfigAttribChecked(dpy, cfg[i], GLX_BIND_TO_TEXTURE_RGBA_EXT, &rgba);
if (!rgb && !rgba) { if (!rgb && !rgba) {
log_info("FBConfig is neither RGBA nor RGB, compton cannot " log_info("FBConfig is neither RGBA nor RGB, we cannot "
"handle this setup."); "handle this setup.");
continue; continue;
} }
@ -466,7 +466,7 @@ static void glx_present(backend_t *base, const region_t *region attr_unused) {
struct _glx_data *gd = (void *)base; struct _glx_data *gd = (void *)base;
gl_present(base, region); gl_present(base, region);
glXSwapBuffers(gd->display, gd->target_win); glXSwapBuffers(gd->display, gd->target_win);
// XXX there should be no need to block compton will wait for render to finish // XXX there should be no need to block, the core should wait for render to finish
if (!gd->gl.is_nvidia) { if (!gd->gl.is_nvidia) {
glFinish(); glFinish();
} }

View File

@ -14,7 +14,7 @@
#include "backend/backend.h" #include "backend/backend.h"
#include "backend/backend_common.h" #include "backend/backend_common.h"
#include "common.h" #include "common.h"
#include "compton.h" #include "picom.h"
#include "config.h" #include "config.h"
#include "kernel.h" #include "kernel.h"
#include "log.h" #include "log.h"

View File

@ -1028,7 +1028,7 @@ static bool c2_l_postprocess(session_t *ps, c2_l_t *pleaf) {
} }
} }
// Enable specific tracking options in compton if needed by the condition // Enable specific tracking options, if needed by the condition
// TODO: Add track_leader // TODO: Add track_leader
switch (pleaf->predef) { switch (pleaf->predef) {
// case C2_L_PROUNDED: ps->o.detect_rounded_corners = true; break; // case C2_L_PROUNDED: ps->o.detect_rounded_corners = true; break;

View File

@ -125,7 +125,7 @@ typedef struct _latom {
struct _latom *next; struct _latom *next;
} latom_t; } latom_t;
/// Structure containing all necessary data for a compton session. /// Structure containing all necessary data for a session.
typedef struct session { typedef struct session {
// === Event handlers === // === Event handlers ===
/// ev_io for X connection /// ev_io for X connection
@ -184,7 +184,7 @@ typedef struct session {
xcb_window_t overlay; xcb_window_t overlay;
/// The target window for debug mode /// The target window for debug mode
xcb_window_t debug_window; xcb_window_t debug_window;
/// Whether the root tile is filled by compton. /// Whether the root tile is filled by us.
bool root_tile_fill; bool root_tile_fill;
/// Picture of the root window background. /// Picture of the root window background.
paint_t root_tile_paint; paint_t root_tile_paint;
@ -241,7 +241,7 @@ typedef struct session {
ignore_t **ignore_tail; ignore_t **ignore_tail;
// Cached blur convolution kernels. // Cached blur convolution kernels.
struct x_convolution_kernel **blur_kerns_cache; struct x_convolution_kernel **blur_kerns_cache;
/// If compton should quit /// If we should quit
bool quit:1; bool quit:1;
/// Whether there are pending updates, like window creation, etc. /// Whether there are pending updates, like window creation, etc.
/// TODO use separate flags for dfferent kinds of updates so we don't /// TODO use separate flags for dfferent kinds of updates so we don't

View File

@ -20,8 +20,8 @@ module utils {
module region { module region {
header "region.h" header "region.h"
} }
module compton { module picom {
header "compton.h" header "picom.h"
} }
module types { module types {
header "types.h" header "types.h"

View File

@ -28,7 +28,7 @@
typedef struct session session_t; typedef struct session session_t;
/// @brief Possible backends of compton. /// @brief Possible backends
enum backend { enum backend {
BKEND_XRENDER, BKEND_XRENDER,
BKEND_GLX, BKEND_GLX,
@ -226,9 +226,9 @@ typedef struct options {
bool detect_client_leader; bool detect_client_leader;
// === Calculated === // === Calculated ===
/// Whether compton needs to track window name and class. /// Whether we need to track window name and class.
bool track_wdata; bool track_wdata;
/// Whether compton needs to track window leaders. /// Whether we need to track window leaders.
bool track_leader; bool track_leader;
// Don't use EWMH to detect fullscreen applications // Don't use EWMH to detect fullscreen applications

View File

@ -1228,7 +1228,7 @@ cdbus_process(DBusConnection *c attr_unused, DBusMessage *msg, void *ud) {
dbus_message_is_method_call(msg, CDBUS_INTERFACE_NAME, method) dbus_message_is_method_call(msg, CDBUS_INTERFACE_NAME, method)
if (cdbus_m_ismethod("reset")) { if (cdbus_m_ismethod("reset")) {
log_info("compton is resetting..."); log_info("picom is resetting...");
ev_break(ps->loop, EVBREAK_ALL); ev_break(ps->loop, EVBREAK_ALL);
if (!dbus_message_get_no_reply(msg)) if (!dbus_message_get_no_reply(msg))
cdbus_reply_bool(ps, msg, true); cdbus_reply_bool(ps, msg, true);

View File

@ -11,7 +11,7 @@
#include "atom.h" #include "atom.h"
#include "common.h" #include "common.h"
#include "compiler.h" #include "compiler.h"
#include "compton.h" #include "picom.h"
#include "config.h" #include "config.h"
#include "event.h" #include "event.h"
#include "log.h" #include "log.h"
@ -633,7 +633,7 @@ ev_selection_clear(session_t *ps, xcb_selection_clear_event_t attr_unused *ev) {
// If we lose that one, we should exit. // If we lose that one, we should exit.
log_fatal("Another composite manager started and took the _NET_WM_CM_Sn " log_fatal("Another composite manager started and took the _NET_WM_CM_Sn "
"selection."); "selection.");
quit_compton(ps); quit(ps);
} }
void ev_handle(session_t *ps, xcb_generic_event_t *ev) { void ev_handle(session_t *ps, xcb_generic_event_t *ev) {

View File

@ -7,10 +7,10 @@ base_deps = [
libev libev
] ]
srcs = [ files('compton.c', 'win.c', 'c2.c', 'x.c', 'config.c', 'vsync.c', 'utils.c', srcs = [ files('picom.c', 'win.c', 'c2.c', 'x.c', 'config.c', 'vsync.c', 'utils.c',
'diagnostic.c', 'string_utils.c', 'render.c', 'kernel.c', 'log.c', 'diagnostic.c', 'string_utils.c', 'render.c', 'kernel.c', 'log.c',
'options.c', 'event.c', 'cache.c', 'atom.c') ] 'options.c', 'event.c', 'cache.c', 'atom.c') ]
compton_inc = include_directories('.') picom_inc = include_directories('.')
cflags = [] cflags = []
@ -80,10 +80,10 @@ endif
subdir('backend') subdir('backend')
compton = executable('compton', srcs, c_args: cflags, picom = executable('picom', srcs, c_args: cflags,
dependencies: [ base_deps, deps, test_h_dep ], dependencies: [ base_deps, deps, test_h_dep ],
install: true, include_directories: compton_inc) install: true, include_directories: picom_inc)
if get_option('unittest') if get_option('unittest')
test('compton unittest', compton, args: [ '--unittest' ]) test('picom unittest', picom, args: [ '--unittest' ])
endif endif

View File

@ -40,7 +40,7 @@ typedef struct {
GLint unifm_factor_center; GLint unifm_factor_center;
} glx_blur_pass_t; } glx_blur_pass_t;
/// Structure containing GLX-dependent data for a compton session. /// Structure containing GLX-dependent data for a session.
typedef struct glx_session { typedef struct glx_session {
// === OpenGL related === // === OpenGL related ===
/// GLX context. /// GLX context.

View File

@ -22,13 +22,12 @@
/** /**
* Print usage text. * Print usage text.
*/ */
static void usage(int ret) { static void usage(const char *argv0, int ret) {
#define WARNING_DISABLED " (DISABLED AT COMPILE TIME)" #define WARNING_DISABLED " (DISABLED AT COMPILE TIME)"
static const char *usage_text = static const char *usage_text =
"compton (" COMPTON_VERSION ")\n" "picom (" COMPTON_VERSION ")\n"
"This is the maintenance fork of compton, please report\n" "Please report bugs to https://github.com/yshui/picom\n\n"
"bugs to https://github.com/yshui/compton\n\n" "usage: %s [options]\n"
"usage: compton [options]\n"
"Options:\n" "Options:\n"
"\n" "\n"
"-r radius\n" "-r radius\n"
@ -151,7 +150,7 @@ static void usage(int ret) {
" windows.\n" " windows.\n"
"\n" "\n"
"--refresh-rate val\n" "--refresh-rate val\n"
" Specify refresh rate of the screen. If not specified or 0, compton\n" " Specify refresh rate of the screen. If not specified or 0, we\n"
" will try detecting this with X RandR extension.\n" " will try detecting this with X RandR extension.\n"
"\n" "\n"
"--vsync\n" "--vsync\n"
@ -161,8 +160,7 @@ static void usage(int ret) {
" Painting on X Composite overlay window.\n" " Painting on X Composite overlay window.\n"
"\n" "\n"
"--sw-opti\n" "--sw-opti\n"
" Limit compton to repaint at most once every 1 / refresh_rate\n" " Limit repaint to at most once every 1 / refresh_rate second.\n"
" second to boost performance.\n"
"\n" "\n"
"--use-ewmh-active-win\n" "--use-ewmh-active-win\n"
" Use _NET_WM_ACTIVE_WINDOW on the root window to determine which\n" " Use _NET_WM_ACTIVE_WINDOW on the root window to determine which\n"
@ -246,7 +244,7 @@ static void usage(int ret) {
"\n" "\n"
"--opacity-rule opacity:condition\n" "--opacity-rule opacity:condition\n"
" Specify a list of opacity rules, in the format \"PERCENT:PATTERN\",\n" " Specify a list of opacity rules, in the format \"PERCENT:PATTERN\",\n"
" like \'50:name *= \"Firefox\"'. compton-trans is recommended over\n" " like \'50:name *= \"Firefox\"'. picom-trans is recommended over\n"
" this. Note we do not distinguish 100% and unset, and we don't make\n" " this. Note we do not distinguish 100% and unset, and we don't make\n"
" any guarantee about possible conflicts with other programs that set\n" " any guarantee about possible conflicts with other programs that set\n"
" _NET_WM_WINDOW_OPACITY on frame or client windows.\n" " _NET_WM_WINDOW_OPACITY on frame or client windows.\n"
@ -313,13 +311,13 @@ static void usage(int ret) {
"\n" "\n"
"--debug-mode\n" "--debug-mode\n"
" Render into a separate window, and don't take over the screen. Useful\n" " Render into a separate window, and don't take over the screen. Useful\n"
" when you want to attach a debugger to compton\n" " when you want to attach a debugger to picom\n"
"\n" "\n"
"--no-ewmh-fullscreen\n" "--no-ewmh-fullscreen\n"
" Do not use EWMH to detect fullscreen windows. Reverts to checking\n" " Do not use EWMH to detect fullscreen windows. Reverts to checking\n"
" if a window is fullscreen based only on its size and coordinates.\n"; " if a window is fullscreen based only on its size and coordinates.\n";
FILE *f = (ret ? stderr : stdout); FILE *f = (ret ? stderr : stdout);
fputs(usage_text, f); fprintf(f, usage_text, argv0);
#undef WARNING_DISABLED #undef WARNING_DISABLED
} }
@ -438,7 +436,7 @@ bool get_early_config(int argc, char *const *argv, char **config_file, bool *all
if (o == 256) { if (o == 256) {
*config_file = strdup(optarg); *config_file = strdup(optarg);
} else if (o == 'h') { } else if (o == 'h') {
usage(0); usage(argv[0], 0);
return true; return true;
} else if (o == 'b') { } else if (o == 'b') {
@ -456,7 +454,7 @@ bool get_early_config(int argc, char *const *argv, char **config_file, bool *all
} else if (o == 320) { } else if (o == 320) {
log_warn("--no-name-pixmap will be ignored"); log_warn("--no-name-pixmap will be ignored");
} else if (o == '?' || o == ':') { } else if (o == '?' || o == ':') {
usage(1); usage(argv[0], 1);
*exit_code = 1; *exit_code = 1;
return true; return true;
} }
@ -465,7 +463,7 @@ bool get_early_config(int argc, char *const *argv, char **config_file, bool *all
// Check for abundant positional arguments // Check for abundant positional arguments
if (optind < argc) { if (optind < argc) {
// log is not initialized here yet // log is not initialized here yet
fprintf(stderr, "compton doesn't accept positional arguments.\n"); fprintf(stderr, "picom doesn't accept positional arguments.\n");
*exit_code = 1; *exit_code = 1;
return true; return true;
} }
@ -516,7 +514,7 @@ void get_cfg(options_t *opt, int argc, char *const *argv, bool shadow_enable,
// Short options // Short options
case 318: case 318:
case 'h': case 'h':
// These options should cause compton to exit early, // These options should cause us to exit early,
// so assert(false) here // so assert(false) here
assert(false); assert(false);
break; break;
@ -617,7 +615,7 @@ void get_cfg(options_t *opt, int argc, char *const *argv, bool shadow_enable,
break; break;
case 271: case 271:
// --alpha-step // --alpha-step
log_warn("--alpha-step has been removed, compton now tries to " log_warn("--alpha-step has been removed, we now tries to "
"make use of all alpha values"); "make use of all alpha values");
break; break;
case 272: log_warn("use of --dbe is deprecated"); break; case 272: log_warn("use of --dbe is deprecated"); break;
@ -798,7 +796,7 @@ void get_cfg(options_t *opt, int argc, char *const *argv, bool shadow_enable,
case 801: opt->print_diagnostics = true; break; case 801: opt->print_diagnostics = true; break;
P_CASEBOOL(802, debug_mode); P_CASEBOOL(802, debug_mode);
P_CASEBOOL(803, no_ewmh_fullscreen); P_CASEBOOL(803, no_ewmh_fullscreen);
default: usage(1); break; default: usage(argv[0], 1); break;
#undef P_CASEBOOL #undef P_CASEBOOL
} }
// clang-format on // clang-format on

View File

@ -31,10 +31,10 @@
#include "common.h" #include "common.h"
#include "compiler.h" #include "compiler.h"
#include "compton.h"
#include "config.h" #include "config.h"
#include "err.h" #include "err.h"
#include "kernel.h" #include "kernel.h"
#include "picom.h"
#ifdef CONFIG_OPENGL #ifdef CONFIG_OPENGL
#include "opengl.h" #include "opengl.h"
#endif #endif
@ -98,7 +98,7 @@ void set_root_flags(session_t *ps, uint64_t flags) {
ps->root_flags |= flags; ps->root_flags |= flags;
} }
void quit_compton(session_t *ps) { void quit(session_t *ps) {
ps->quit = true; ps->quit = true;
ev_break(ps->loop, EVBREAK_ALL); ev_break(ps->loop, EVBREAK_ALL);
} }
@ -731,7 +731,7 @@ static bool initialize_backend(session_t *ps) {
} }
if (!ps->backend_data) { if (!ps->backend_data) {
log_fatal("Failed to initialize backend, aborting..."); log_fatal("Failed to initialize backend, aborting...");
quit_compton(ps); quit(ps);
return false; return false;
} }
ps->backend_data->ops = backend_list[ps->o.backend]; ps->backend_data->ops = backend_list[ps->o.backend];
@ -740,7 +740,7 @@ static bool initialize_backend(session_t *ps) {
log_fatal("Failed to prepare for background blur, aborting..."); log_fatal("Failed to prepare for background blur, aborting...");
ps->backend_data->ops->deinit(ps->backend_data); ps->backend_data->ops->deinit(ps->backend_data);
ps->backend_data = NULL; ps->backend_data = NULL;
quit_compton(ps); quit(ps);
return false; return false;
} }
@ -937,10 +937,10 @@ static bool register_cm(session_t *ps) {
{ {
XClassHint *h = XAllocClassHint(); XClassHint *h = XAllocClassHint();
if (h) { if (h) {
h->res_name = "compton"; h->res_name = "picom";
h->res_class = "compton"; h->res_class = "picom";
} }
Xutf8SetWMProperties(ps->dpy, ps->reg_win, "compton", "compton", NULL, 0, Xutf8SetWMProperties(ps->dpy, ps->reg_win, "picom", "picom", NULL, 0,
NULL, NULL, h); NULL, NULL, h);
XFree(h); XFree(h);
} }
@ -1334,7 +1334,7 @@ static void handle_pending_updates(EV_P_ struct session *ps) {
log_fatal("failed to grab x server"); log_fatal("failed to grab x server");
x_print_error(e->full_sequence, e->major_code, e->minor_code, x_print_error(e->full_sequence, e->major_code, e->minor_code,
e->error_code); e->error_code);
return quit_compton(ps); return quit(ps);
} }
ps->server_grabbed = true; ps->server_grabbed = true;
@ -1349,7 +1349,8 @@ static void handle_pending_updates(EV_P_ struct session *ps) {
refresh_windows(ps); refresh_windows(ps);
{ {
auto r = xcb_get_input_focus_reply(ps->c, xcb_get_input_focus(ps->c), NULL); auto r = xcb_get_input_focus_reply(
ps->c, xcb_get_input_focus(ps->c), NULL);
if (!ps->active_win || (r && r->focus != ps->active_win->base.id)) { if (!ps->active_win || (r && r->focus != ps->active_win->base.id)) {
recheck_focus(ps); recheck_focus(ps);
} }
@ -1367,7 +1368,7 @@ static void handle_pending_updates(EV_P_ struct session *ps) {
log_fatal("failed to ungrab x server"); log_fatal("failed to ungrab x server");
x_print_error(e->full_sequence, e->major_code, e->minor_code, x_print_error(e->full_sequence, e->major_code, e->minor_code,
e->error_code); e->error_code);
return quit_compton(ps); return quit(ps);
} }
ps->server_grabbed = false; ps->server_grabbed = false;
@ -1521,17 +1522,17 @@ static void x_event_callback(EV_P attr_unused, ev_io *w, int revents attr_unused
/** /**
* Turn on the program reset flag. * Turn on the program reset flag.
* *
* This will result in compton resetting itself after next paint. * This will result in the compostior resetting itself after next paint.
*/ */
static void reset_enable(EV_P_ ev_signal *w attr_unused, int revents attr_unused) { static void reset_enable(EV_P_ ev_signal *w attr_unused, int revents attr_unused) {
log_info("compton is resetting..."); log_info("picom is resetting...");
ev_break(EV_A_ EVBREAK_ALL); ev_break(EV_A_ EVBREAK_ALL);
} }
static void exit_enable(EV_P attr_unused, ev_signal *w, int revents attr_unused) { static void exit_enable(EV_P attr_unused, ev_signal *w, int revents attr_unused) {
session_t *ps = session_ptr(w, int_signal); session_t *ps = session_ptr(w, int_signal);
log_info("compton is quitting..."); log_info("picom is quitting...");
quit_compton(ps); quit(ps);
} }
/** /**
@ -1708,7 +1709,7 @@ static session_t *session_init(int argc, char **argv, Display *dpy,
if (!reply || (reply->major_version == 0 && reply->minor_version < 2)) { if (!reply || (reply->major_version == 0 && reply->minor_version < 2)) {
log_fatal("Your X server doesn't have Composite >= 0.2 support, " log_fatal("Your X server doesn't have Composite >= 0.2 support, "
"compton cannot run."); "we cannot proceed.");
exit(1); exit(1);
} }
free(reply); free(reply);
@ -1766,6 +1767,11 @@ static session_t *session_init(int argc, char **argv, Display *dpy,
} }
} }
if (strstr(argv[0], "compton")) {
log_warn("This compositor has been renamed to \"picom\", the \"compton\" "
"binary will not be installed in the future.");
}
if (ps->o.debug_mode && !ps->o.experimental_backends) { if (ps->o.debug_mode && !ps->o.experimental_backends) {
log_fatal("Debug mode only works with the experimental backends."); log_fatal("Debug mode only works with the experimental backends.");
return NULL; return NULL;
@ -2322,7 +2328,7 @@ int main(int argc, char **argv) {
XSetEventQueueOwner(dpy, XCBOwnsEventQueue); XSetEventQueueOwner(dpy, XCBOwnsEventQueue);
ps_g = session_init(argc, argv, dpy, config_file, all_xerrors, need_fork); ps_g = session_init(argc, argv, dpy, config_file, all_xerrors, need_fork);
if (!ps_g) { if (!ps_g) {
log_fatal("Failed to create new compton session."); log_fatal("Failed to create new session.");
return 1; return 1;
} }
if (need_fork) { if (need_fork) {

View File

@ -28,8 +28,8 @@
enum root_flags { ROOT_FLAGS_SCREEN_CHANGE = 1 }; enum root_flags { ROOT_FLAGS_SCREEN_CHANGE = 1 };
// == Functions == // == Functions ==
// TODO move static inline functions that are only used in compton.c, into // TODO move static inline functions that are only used in picom.c, into
// compton.c // picom.c
// inline functions must be made static to compile correctly under clang: // inline functions must be made static to compile correctly under clang:
// http://clang.llvm.org/compatibility.html#inline // http://clang.llvm.org/compatibility.html#inline
@ -57,7 +57,7 @@ void discard_ignore(session_t *ps, unsigned long sequence);
void set_root_flags(session_t *ps, uint64_t flags); void set_root_flags(session_t *ps, uint64_t flags);
void quit_compton(session_t *ps); void quit(session_t *ps);
xcb_window_t session_get_target_window(session_t *); xcb_window_t session_get_target_window(session_t *);

View File

@ -78,7 +78,7 @@ safe_isnan(double a) {
// Some macros for checked cast // Some macros for checked cast
// Note these macros are not complete, as in, they won't work for every integer types. But // Note these macros are not complete, as in, they won't work for every integer types. But
// they are good enough for compton. // they are good enough for our use cases.
#define to_int_checked(val) \ #define to_int_checked(val) \
({ \ ({ \

View File

@ -20,7 +20,7 @@
#include "c2.h" #include "c2.h"
#include "common.h" #include "common.h"
#include "compiler.h" #include "compiler.h"
#include "compton.h" #include "picom.h"
#include "config.h" #include "config.h"
#include "list.h" #include "list.h"
#include "log.h" #include "log.h"
@ -2053,7 +2053,7 @@ void map_win_start(session_t *ps, struct managed_win *w) {
ps->c, w->base.id, XCB_CW_EVENT_MASK, ps->c, w->base.id, XCB_CW_EVENT_MASK,
(const uint32_t[]){determine_evmask(ps, w->base.id, WIN_EVMODE_FRAME)}); (const uint32_t[]){determine_evmask(ps, w->base.id, WIN_EVMODE_FRAME)});
// Notify compton when the shape of a window changes // Get notification when the shape of a window changes
if (ps->shape_exists) { if (ps->shape_exists) {
xcb_shape_select_input(ps->c, w->base.id, 1); xcb_shape_select_input(ps->c, w->base.id, 1);
} }
@ -2193,7 +2193,7 @@ struct managed_win *find_toplevel2(session_t *ps, xcb_window_t wid) {
// Using find_win here because if we found a unmanaged window we know about, we // Using find_win here because if we found a unmanaged window we know about, we
// can stop early. // can stop early.
while (wid && wid != ps->root && !(w = find_win(ps, wid))) { while (wid && wid != ps->root && !(w = find_win(ps, wid))) {
// xcb_query_tree probably fails if you run compton when X is somehow // xcb_query_tree probably fails if you run picom when X is somehow
// initializing (like add it in .xinitrc). In this case // initializing (like add it in .xinitrc). In this case
// just leave it alone. // just leave it alone.
auto reply = xcb_query_tree_reply(ps->c, xcb_query_tree(ps->c, wid), NULL); auto reply = xcb_query_tree_reply(ps->c, xcb_query_tree(ps->c, wid), NULL);

View File

@ -73,7 +73,7 @@ struct window_stack_entry {
* considered part of the window. * considered part of the window.
*/ */
/// Structure representing a top-level window compton manages. /// Structure representing a top-level managed window.
typedef struct win win; typedef struct win win;
struct win { struct win {
UT_hash_handle hh; UT_hash_handle hh;

View File

@ -111,7 +111,7 @@ bool wid_get_text_prop(session_t *ps, xcb_window_t wid, xcb_atom_t prop, char **
} }
// A cache of pict formats. We assume they don't change during the lifetime // A cache of pict formats. We assume they don't change during the lifetime
// of compton // of this program
static thread_local xcb_render_query_pict_formats_reply_t *g_pictfmts = NULL; static thread_local xcb_render_query_pict_formats_reply_t *g_pictfmts = NULL;
static inline void x_get_server_pictfmts(xcb_connection_t *c) { static inline void x_get_server_pictfmts(xcb_connection_t *c) {
@ -576,7 +576,7 @@ struct xvisual_info x_get_visual_info(xcb_connection_t *c, xcb_visualid_t visual
return (struct xvisual_info){-1, -1, -1, -1, -1, 0}; return (struct xvisual_info){-1, -1, -1, -1, -1, 0};
} }
if (pictfmt->type != XCB_RENDER_PICT_TYPE_DIRECT) { if (pictfmt->type != XCB_RENDER_PICT_TYPE_DIRECT) {
log_error("compton cannot handle non-DirectColor visuals. Report an " log_error("We cannot handle non-DirectColor visuals. Report an "
"issue if you see this error message."); "issue if you see this error message.");
return (struct xvisual_info){-1, -1, -1, -1, -1, 0}; return (struct xvisual_info){-1, -1, -1, -1, -1, 0};
} }

View File

@ -78,8 +78,8 @@ static inline uint32_t x_new_id(xcb_connection_t *c) {
auto ret = xcb_generate_id(c); auto ret = xcb_generate_id(c);
if (ret == (uint32_t)-1) { if (ret == (uint32_t)-1) {
log_fatal("We seems to have run of XIDs. This is either a bug in the X " log_fatal("We seems to have run of XIDs. This is either a bug in the X "
"server, or a resource leakage in compton. Please open an " "server, or a resource leakage in the compositor. Please open an "
"issue about this problem. compton will die."); "issue about this problem. The compositor will die.");
abort(); abort();
} }
return ret; return ret;

View File

@ -8,12 +8,12 @@ echo "Running test $2"
# TODO keep the log file, and parse it to see if test is successful # TODO keep the log file, and parse it to see if test is successful
($1 --experimental-backends --backend dummy --log-level=debug --log-file=$PWD/log --config=$2) & ($1 --experimental-backends --backend dummy --log-level=debug --log-file=$PWD/log --config=$2) &
compton_pid=$! main_pid=$!
$3 $3
kill -INT $compton_pid || true kill -INT $main_pid || true
cat log cat log
rm log rm log
wait $compton_pid wait $main_pid

View File

@ -1,8 +1,8 @@
#!/bin/sh #!/bin/sh
set -e set -e
compton=$(realpath $1) exe=$(realpath $1)
cd $(dirname $0) cd $(dirname $0)
./run_one_test.sh $compton configs/empty.conf testcases/basic.py ./run_one_test.sh $exe configs/empty.conf testcases/basic.py
./run_one_test.sh $compton configs/issue239.conf testcases/issue239.py ./run_one_test.sh $exe configs/issue239.conf testcases/issue239.py
./run_one_test.sh $compton configs/issue239_2.conf testcases/issue239_2.py ./run_one_test.sh $exe configs/issue239_2.conf testcases/issue239_2.py