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). To force it to integrate with SWT you can use the system property chromium.force_windowless_swt=true.