Hello,
I would like to add a couple more observations, even if jammy is now released, since they are still working in the released 22.04 lts version, in case someone finds them useful:
1) recent items extension is a very nice one. Even if flashback has recent items ages ago, this extension provides the ability, using right click, to send you directly to the folder the recent item file exists. Flashback has the ability to show the path the file belongs to, yet it is not possible to go there directly. Yet, via nautilus (a.k.a. Files) this can happen though.
Even if this extension was (is) not ready for regular ubuntu, just adding version 42 in the metadata.json file like this:
"shell-version": [
"3.36",
"40",
"41",
"42"
],
will do the work.
2) Show desktop: in flashback that icon is found on the left hand side of the bottom panel. There are extensions that can enable show-desktop in gnome shell, yet only in top panel, as I'm aware of. Check this "extension", which can be added with the rest of extensions and show desktop on the same spot.
i) in wayland, some times, show-desktop was underneath the bottom panel, so it is not advisable to use it with wayland, unless you enable and disable it in order to bring it forth (in case it happens to xorg, the same solution applies)
ii) the way it is written, it should show up on the left hand side of your screen. If you have different resolution than mine, you have to tamper with the button.set_position(1, 993) 993 value and choose a value slightly smaller than that of your vertical resolution value
iii) it can be combined with the extension Frippery Bottom Panel by adjusting the 40px value of the stylesheet.css file:
.window-list-box {
padding: 1px 40px; /*leave space for show desktop button*/
spacing: 6px;
}
which places the application launchers slightly to the right in order to leave space for the show-desktop icon
iv) it is comprised of the following two files:
extension.js
Code:
const { Atk, Clutter, Gio, GLib, GObject, Meta, Pango, Shell, St } = imports.gi;
const Signals = imports.signals;
const CheckBox = imports.ui.checkBox;
const Layout = imports.ui.layout;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
const PopupMenu = imports.ui.popupMenu;
const WindowManager = imports.ui.windowManager;
const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
let button;
function _showdesktop () {
let stuff = GLib.spawn_command_line_sync("/usr/local/bin/show-desktop");
}
function init() {
button = new St.Bin({ style_class: 'panel-button',
reactive: true,
can_focus: true,
track_hover: true,
height: 30,
width: 30 }); /*size of icon*/
button.set_position(1, 993); /*distance of icon left, top of the screen (close to screen resolution)*/
let icon = new St.Icon ({ icon_name: 'desktop',
style_class: 'system-status-icon' });
button.set_child(icon);
button.connect('button-press-event', _showdesktop);
}
function enable() {
Main.layoutManager.addChrome(button, {
affectsInputRegion : true,
trackFullscreen : true,
}); /*avoid seeing the button when in full screen*/
}
function disable() {
Main.layoutManager.removeChrome(button);
}
and metadata.json taken from another extension and modified in order to fit
Code:
{
"_generated": "Generated by SweetTooth, do not edit",
"debug": false,
"description": "Minimize/unminimize all open windows with a single click.",
"extension-id": "show-desktop-button",
"gettext-domain": "show-desktop-button",
"localedir": "/usr/share/locale",
"name": "Show Desktop Button",
"settings-schema": "org.gnome.shell.extensions.show-desktop-button",
"shell-version": [
"40",
"41",
"42"
],
"url": "..",
"uuid": "show_desktop@mine",
"version": 1
}
v) edit: create a show-desktop executable under /usr/local/bin/ with the following content:
#!/bin/sh
#Record Open Windows and Minimize Them
open_windows=$(wmctrl -l | cut -f1 -d " ")
if wmctrl -m | grep -e "mode: OFF" -e "mode: N/A" ; then
wmctrl -k on
fi
#Restore Minimized Windows (in the order in which they were opened - newest on top)*
if wmctrl -m | grep "mode: ON" ; then
#for i in $open_windows
#do
#wmctrl -i -R "$i"
wmctrl -k off
#done
fi
vi) use it in a folder named show_desktop@mine
vii) I'm not maintaining extensions. I just add it here in case someone finds it useful.
3) I have observed that Libreoffice is faster in flashback rather than regular ubuntu.
4) Many applications from now on seems that will be gtk4 ones. gtk4 apps use either light or dark theme, so will have either white or black headerbar. In order for someone to find out which gtk version an app is using then go to synaptic package manager, select the desired app, choose properties and then Dependencies and see the gtk version value. A gtk.css file of gtk4 apps can be found under /usr/share/themes. Opening a gtk4 app either in flashback or regular ubuntu it does not respect the legacy theme being responsible for gtk3 apps, so their theme is different from that of their gtk3 counterparts. Trying to solve this just from the /usr/share/themes was not possible. The steps taken in order to change the headerbar (and other things if someone wishes) of the gtk4 apps, so as to match with the rest of the system are (as an example the Yaru-blue theme will be used):
i) go to /usr/share/themes/Yaru-blue/gtk-4.0
ii) check the files included in the binary file gtk.gresource by issuing the command:
gresource list gtk.gresource
iii) extract the gtk.css file from .gresource file
gresource file is located to a specific path: /usr/share/themes/Yaru-blue/gtk-4.0
the files inside gresource file have another path: /com/ubuntu/themes/Yaru-blue/4.0/
and can be extracted to ~/Desktop/somefile.css
so in order to extract from gtk.gresource the listed file gtk.css, which is a file inside gtk.gresource, and
which has the path /com/ubuntu/themes/Yaru-blue/4.0/gtk.css
the command should be (use similar command for the dark variant):
Code:
gresource extract /usr/share/themes/Yaru-blue/gtk-4.0/gtk.gresource /com/ubuntu/themes/Yaru-blue/4.0/gtk.css > ~/Desktop/somefile.css
iv) now rename somefile.css as gtk.css (I changed the name in order to avoid confusion), make the desired changes and add it to ~/.config/gtk-4.0 for changes to take effect immediately
Regards!