This extension is based on the "Window Calls" extension by ickyicky (https://github.com/ickyicky), extended by a few methods to provide the focused window's title, window class, and pid.
This extension allows you to list current windows with some of their properties from command line, super usefull for Wayland to get current focused window. The additional information on focused window are also for use with Wayland and espanso (https://github.com/federico-terzi/espanso), which – hopefully – jointly with this extension will be able to provide app-specific keyboard expansions.
Credit to dceee for providing example code in this discussion.
This version has been updated to the new import methods for Gnome 45. So my assumption is it will not work anymore with older Gnome versions (but having upgrade to 45, I cannot test it anymore). So in case you want to use for an older Gnome, pull version 4 of this extension from Github.
Install extension from gnome extensions page.
To manually install, copy extension.js and metadata.json into a folder by (exactly!! Gnome will not load the extension if the folder name does not match the uuid from the metadata) name of window-calls-extended@hseliger.eu under your ~/.local/share/gnome-shell/extensions folder.
To get all active windows simply run from terminal:
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell/Extensions/WindowsExt --method org.gnome.Shell.Extensions.WindowsExt.ListTo get the title of the window with focus:
gdbus call --session --dest org.gnome.Shell --object-path /org/gnome/Shell/Extensions/WindowsExt --method org.gnome.Shell.Extensions.WindowsExt.FocusTitleAvailable methods are:
- org.gnome.Shell.Extensions.WindowsExt.List
- org.gnome.Shell.Extensions.WindowsExt.FocusTitle
- org.gnome.Shell.Extensions.WindowsExt.FocusPID
- org.gnome.Shell.Extensions.WindowsExt.FocusClass
If using from C++, it requires the dbus-1 library. Parameters for the call to dbus_message_new_method_call would be
#define DB_INTERFACE "org.gnome.Shell.Extensions.Windows"
#define DB_DESTINATION "org.gnome.Shell"
#define DB_PATH "/org/gnome/Shell/Extensions/Windows"
#define DB_METHOD "List"