nick-shmyrev / improved-osk-gnome-ext

Improved On Screen Keyboard for Gnome Shell
https://extensions.gnome.org/extension/4413/improved-osk/
94 stars 30 forks source link

Extension doesn't work on Gnome's login screen #41

Open nick-shmyrev opened 1 year ago

nick-shmyrev commented 1 year ago
          > Great find! This is exactly what's needed to fix the issue with screensaver in #36 :+1: 

Also, I've found a way to get it working with GDM - the extension needs to be installed and enabled as a machine-wide extension in order for it to show up on login screen: https://help.gnome.org/admin/system-admin-guide/stable/extensions-enable.html.en. Once I'll have some time, I'll add another section to README with instructions and maybe a bash script to do all that the easy way.

Hmm, that doesn't work for me... The extension doesn't even show up in the Extensions app... Does it work for you?

Originally posted by @PhilDevProg in https://github.com/nick-shmyrev/improved-osk-gnome-ext/issues/39#issuecomment-1474824008

nick-shmyrev commented 1 year ago

Moving this discussion into a separate issue. For reference, here's what has been tried so far:

A few ideas of what might've gone wrong:

I noticed when I'm tinkering with an extension in a VM, Gnome would sometimes disable user extensions due to some errors. Could it be the case for you too? You can run gsettings set org.gnome.shell disable-user-extensions false in terminal to re-enable user extensions. Also, I believe I've got it running even without this, but just in case, make sure you remove the regular user version, installed under ~/.local/share/gnome-shell/extensions, then reboot/relog. Perhaps bumping up the version in metadata.json might fix the issue for you?

Finally, as a last resort, here's a script that hopefully would go through the whole installation process for you. Full disclosure: I only wrote the pseudocode for it, fed that to ChatGPT, then tweaked a few lines here and there. It did work in a Fedora 37 VM, but I'd be extra careful using it on a live device.


#!/bin/bash

zip_filename="improvedosk@nick-shmyrev.dev.shell-extension.zip"

Check if "improvedosk@nick-shmyrev.dev.shell-extension.zip" exists in the current directory

if [ ! -f "$zip_filename" ]; then echo "$zip_filename file not found, exiting..." exit fi

Extract .zip into "/usr/share/gnome-shell/extensions/" directory

sudo unzip -o "$zip_filename" -d /usr/share/gnome-shell/extensions/improvedosk@nick-shmyrev.dev/

Check if "user" file exists in "/etc/dconf/profile/" directory

if [ ! -f /etc/dconf/profile/user ]; then

If "user" file doesn't exist, create it

sudo touch /etc/dconf/profile/user

fi

Check if "user" file has line "user-db:user"

if ! grep -q "^user-db:user$" /etc/dconf/profile/user; then

If "user" file doesn't have line "user-db:user", add it to file

echo "user-db:user" | sudo tee -a /etc/dconf/profile/user > /dev/null

fi

Check if "user" file has line "system-db:local"

if ! grep -q "^system-db:local$" /etc/dconf/profile/user; then

If "user" file doesn't have line "system-db:local", add it to file

echo "system-db:local" | sudo tee -a /etc/dconf/profile/user > /dev/null

fi

Check if "00-extensions" file exists in "/etc/dconf/db/local.d/" directory

if [ ! -f /etc/dconf/db/local.d/00-extensions ]; then

If "00-extensions" file doesn't exist, create it

sudo touch /etc/dconf/db/local.d/00-extensions

# Add "[org/gnome/shell]" line to the top of the file 
echo "[org/gnome/shell]" | sudo tee /etc/dconf/db/local.d/00-extensions > /dev/null

fi

Check if enabled-extensions=[ line exists in 00-extensions file

if grep -q "enabled-extensions=[" "/etc/dconf/db/local.d/00-extensions"; then

If enabled-extensions=[ line exists, but improvedosk@nick-shmyrev.dev is not included,

# add it to the line starting with enabled-extensions=[ right after enabled-extensions=[
sudo sed -i '/enabled-extensions=\[/ s/\]/, \x27improvedosk@nick-shmyrev.dev\x27\]/' /etc/dconf/db/local.d/00-extensions  

else

If enabled-extension=[ line does not exist, add enabled-extension=[improvedosk@nick-shmyrev.dev] to the end of the file.

echo "enabled-extensions=['improvedosk@nick-shmyrev.dev']" | sudo tee --append /etc/dconf/db/local.d/00-extensions > /dev/null  

fi

Update dconf database with new settings

sudo dconf update

echo "$zip_filename installed as a system-wide extension. Please reboot to apply changes."


>
> Another thing worth trying is enabling "Screen Keyboard" in Accessibility Options in upper right corner on Login screen.
nick-shmyrev commented 1 year ago

Now it's installed! Thank you, but it still doesn't work on GDM... I also tried activating the osk in the accessibility menu but I just get the normal OSK from GNOME.

@PhilDevProg Great, so we're making some progress :+1: Does it show up in the list of installed extensions (run gnome-extensions list in terminal to check)? Does it work in user session? Also, just as a sanity check, can you pull the latest version of this repo's master branch and rebuild the package before installing it?

PhilDevProg commented 1 year ago

Now it's installed! Thank you, but it still doesn't work on GDM... I also tried activating the osk in the accessibility menu but I just get the normal OSK from GNOME.

@PhilDevProg Great, so we're making some progress :+1: Does it show up in the list of installed extensions (run gnome-extensions list in terminal to check)? Does it work in user session? Also, just as a sanity check, can you pull the latest version of this repo's master branch and rebuild the package before installing it?

It shows up in the Extensions app and in the output of the command and works in the user session. It also is already built via the newest version in master.

nick-shmyrev commented 1 year ago

Is there a chance you're using one of the languages/osk_layouts that aren't yet supported? There's a list of supported layouts here. Can you see the extended keys (arrows, Ctrl, Alt, etc.) if you switch to English? If your preferred language is not yet supported, see FAQ.

PhilDevProg commented 1 year ago

I'm using the German layout (DE) which works perfectly in the user session with the extended keys showing up...