# Migration guide This migration guide will get you through to make your code work with latest CEF Python. This document includes notable changes that were introduced to cefpython and each topic is prefixed with version number in which a change was introduced. This migration guide doesn't cover all changes required for your software to run smoothly. Some changes depend on the GUI framework you are using and this guide doesn't cover these. You will have to go to the examples/ root directory and see the example for your GUI framework. The new examples are very straightforward and include many useful comments explaining whys. You will have to get through its code and see if anything changed that also requires changes in your application. Table of contents: * [v50+ Distribution packages](#v50-distribution-packages) * [v50+ Importing the cefpython3 package on Linux](#v50-importing-the-cefpython3-package-on-linux) * [v50+ Install X11 error handlers on Linux](#v50-install-x11-error-handlers-on-linux) * [v50+ Set window bounds on Linux](#v50-set-window-bounds-on-linux) * [v50+ Notify CEF on move or resize events](#v50-notify-cef-on-move-or-resize-events) * [v50+ Keyboard focus issues on Linux](#v50-keyboard-focus-issues-on-linux) * [v50+ Windows XP and Vista are no more supported](#v50-windows-xp-and-vista-are-no-more-supported) * [v50+ Mac 32-bit is no more supported](#v50-mac-32-bit-is-no-more-supported) * [v50+ cefbuilds.com is deprected, use Spotify Automated CEF Builds](#v50-cefbuildscom-is-deprected-use-spotify-automated-cef-builds) * [v50+ Build instructions and build tools](#v50-build-instructions-and-build-tools) * [v51+ Off-screen-rendering: new option "windowless_rendering_enabled"](#v51-off-screen-rendering-new-option-windowless_rendering_enabled) * [v51+ Remove LifespanHandler.RunModal](#v51-remove-lifespanhandlerrunmodal) * [v51+ BrowserSettings options removed](#v51-browsersettings-options-removed) * [v51+ cef.Request.Flags changed](#v51-cefrequestflags-changed) * [v51+ Request.GetHeaderMap and SetHeaderMap change](#v51-requestgetheadermap-and-setheadermap-change) * [v54+ GTK 3 example doesn't work anymore on Linux](#v54-gtk-3-example-doesnt-work-anymore-on-linux) * [v54+ libcef.so library is stripped from symbols on Linux](#v54-libcefso-library-is-stripped-from-symbols-on-linux) * [v55+ HTTPS cache problems on pages with certificate errors](#v55-https-cache-problems-on-pages-with-certificate-errors) * [v55.3+ Handlers' callbacks and other interfaces](#v553-handlers-callbacks-and-other-interfaces) * [v56+ MacOS 10.9+ required to run](#v56-macos-109-required-to-run) * [v57.1+ High DPI support on Windows](#v571-high-dpi-support-on-windows) ## v50+ Distribution packages In latest CEF Python there is only one distribution package available: a wheel package. Wheel packages are distributed on [PyPI](https://pypi.python.org/pypi/cefpython3) and you can install it using the pip tool (8.1+ required on Linux). You can also download wheel packages from [GitHub Releases](../../../releases). **Windows** On Windows many of the distribution packages such as MSI, EXE, ZIP and InnoSetup files, are no more available. It is too much hassle to support these. **Linux debian package** On Linux the debian package is not supported anymore. Since pip 8.1+ added support for manylinux1 wheel packages, you can now easily install cefpython on Linux using the pip tool. Installing cefpython on Ubuntu using pip should work out of the box, all OS dependencies on Ubuntu should be satisfied by default. However since upstream CEF has OS dependencies that might not be installed by default on other OSes like e.g. Fedora, and since debian packages allow to list these and install in an automated manner, it might be reconsidered in the future to provide debian packages again. ## v50+ Importing the cefpython3 package on Linux In the past on Linux it was required for the cefpython3 package to be imported before any other packages due to tcmalloc global hook being loaded. This is not required anymore, tcmalloc is disabled by default. ## v50+ Install X11 error handlers on Linux It is required to install X11 error handlers on Linux, otherwise you will see 'BadWindow' errors happening - sometimes randomly - which will cause application to terminate. Since v56+ x11 error handlers are installed automatically by default during the call to cef.Initialize(). However sometimes that is not enough like for example in the wxpython.py example which requires the x11 error handlers to be installed manually after wx was initialized, and that is because wx initialization had reset x11 error handlers that were installed earlier during cef initialization (Issue [#334](../../../issues/334)). You can install X11 error handlers by calling: ``` WindowUtils = cef.WindowUtils() WindowUtils.InstallX11ErrorHandlers() ``` API ref: WindowUtils.[InstallX11ErrorHandlers()](../api/WindowUtils.md#installx11errorhandlers-linux) ## v50+ Set window bounds on Linux It is now required to set window bounds during window "resize", "move" and "configure" events on Linux. You can do so by calling: ``` browser.SetBounds(x, y, width, height) ``` API ref: Browser.[SetBounds()](../api/Browser.md#setbounds) ## v50+ Notify CEF on move or resize events It is required to notify the browser on move or resize events so that popup widgets (e.g. \