Windowless

The Equo Chromium browser provides a "Windowless" mode that is essentially a headless browser. The Equo Chromium Windowless mode is very useful for various operations regarding the processing of webpages, since it’s not configured with a GUI. As a result, it is much faster than a normal browser. This supports many use cases, such as:

  • Automated web testing.

  • Data extraction or web scrapping.

  • Layout checking and performance testing.

Using the Windowless mode in an SWT application

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.*;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

import com.equo.chromium.ChromiumBrowser;

public class Windowless {
	public static void main(String[] args) throws ClassNotFoundException {
		ChromiumBrowser.earlyInit(); // (1)
		Display display = Display.getDefault();
		Shell shell = new Shell(display);
		shell.setLayout(new GridLayout(1, false));
		final ChromiumBrowser browser = ChromiumBrowser
				.windowless("https://docs.equo.dev/main/getting-started/introduction.html");
		Button button = new Button(shell, SWT.PUSH);
		button.setText("windowless");
		button.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				browser.executeJavacript("console.log(document.body.innerHTML)");
			}
		});

		shell.pack();
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}
}
You need to use [1] and property -Dchromium.init_threads=true or one of the methods described in Wayland Support section.

Using the Windowless mode in a plain Java application

import com.equo.chromium.ChromiumBrowser;

public class Windowless {
	public static void main(String[] args) {
		ChromiumBrowser browser = ChromiumBrowser
				.windowless("https://docs.equo.dev/main/getting-started/introduction.html");
		ChromiumBrowser.startBrowsers();
	}
}
The Windowless mode tries to integrate with the underlying system automatically (Standalone or SWT). The application can run without any display servers on Linux if it only creates Windowless browsers. To force it to integrate with SWT you can use the system property chromium.force_windowless_swt=true.