Skip to content

Conversation

LinqLover
Copy link
Contributor

For the beginning, I just documented how to install the VM in an Ubuntu system so that you can run images more conveniently from the GUI:

image

Proper window icon in launcher/dock:

image

(For clarification, by default you cannot see nor add a Squeak binary to "Open With" in Gnome, and the app icon is just generic.)

Tested on Ubuntu 24.

Future work:

  • I also tried to add an icon to the file in the Files app (nautilus) but that doesn't work right now.
  • It would be nice if the starter script or the binary itself had an option to trigger a file chooser if no image file is specified, so that opening Squeak from the launcher works (currently it does nothing visible).
  • Automate all of this, ideally also ship it as a deb package (or maybe research alternatives such as snap/flatpak).

@squeak-smalltalk-bot
Copy link

squeak-smalltalk-bot commented Feb 8, 2025 via email

@LinqLover
Copy link
Contributor Author

Thanks for the feedback, tim!

  • noticed an apparent typo on line 13 " Create ~/.ocal/bin/squeak:" Pretty sure that ought to be ~/.local

fixed

/usr/local is global on the machine, ~/.local is just for the current user. I'm not sure how established the latter is, but not only it feels cleaner to me, it also avoids sudo permissions for installing Squeak. However, going the global way would maybe make it easier to set up file icons. You can already update the paths accordingly, maybe we should document/support both.

@squeak-smalltalk-bot
Copy link

squeak-smalltalk-bot commented Feb 9, 2025 via email

@aSqueaker
Copy link

If you're not seeing the icon, try adding this to your .desktop file:

StartupWMClass=squeak

An alternatative icon:

Squeak-logo-white-background-68x51

If you prefer to run Squeak full screen, you might appreciate the additional screen real-estate afforded by installing the Unite! Gnome extension. First, install the Gnome Shell Integration extension in Chrome from

https://extensions.gnome.org/

then install the "Unite!" extension. It unites the window title bar with the Gnome top bar.

@LinqLover
Copy link
Contributor Author

@aSqueaker I have added StartupWMClass to my .desktop file and have updated the database but cannot see any difference. Does this actually work for you, and under which version of Gnome? :)

Regarding your other note, if I turn Squeak to fullscreen mode, the Goome top bar is hidden, so I don't see any advantage in merging the title bar with the Gnome top bar. Apart from that, I cannot find this extension in the Extension Store - perhaps it is not available in Ubuntu 24 any longer?

@squeak-smalltalk-bot
Copy link

squeak-smalltalk-bot commented Feb 19, 2025 via email

@squeak-smalltalk-bot
Copy link

squeak-smalltalk-bot commented Feb 19, 2025 via email

@LinqLover
Copy link
Contributor Author

Hi Chris,

the windows appear grouped for me even when StartupWMClass is not included in the .desktop file. The Unite extension is not compatible with Ubuntu 24 anymore.

Anyway, thanks for the comments!

@LinqLover
Copy link
Contributor Author

In a meeting of the previous board, we discussed that we are hesitant to promote such a kind of singleton VM because many use cases involve using different VMs for different images.

Nevertheless, I would suggest to merge this documentation into the main branch, plus maybe include it into the Linux/AiO bundles so that interested users can follow these instructions. Any objections?

Comment on lines +16 to +20
#!/bin/sh
set -e
version=202502080249
cd "$HOME/.local/squeak/$version/"
exec ./squeak "$@"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One issue with this script is that it can only be used as squeak /absolute/path/to.image but not as squeak relative.image. On the other hand, if we don't cd before the exec, the actual squeak script will not find the binaries. Not sure how to fix this...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LD_* shenanigans?
fixing rpath for squeak, finally?
so much opportunity

problem also is: the CD changes the home path of the image

not good

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's all Greek to me. :-)

Also, FileDirectory default and pwd never (?) were the same in Squeak ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, FileDirectory default and pwd never (?) were the same in Squeak ...

Or is this just the behavior I am seeing because of cd in the default Linux script?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

id say so, yes.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's all Greek to me. :-)

What would be the output if you omitted the cd and used the full path to the squeak script instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's all Greek to me. :-)

What would be the output if you omitted the cd and used the full path to the squeak script instead?

Fascinating. It works! I wonder why I did that, I'm sure I must have had a reason...

Suggested change
#!/bin/sh
set -e
version=202502080249
cd "$HOME/.local/squeak/$version/"
exec ./squeak "$@"
#!/bin/sh
set -e
version=202502080249
exec "$HOME/.local/squeak/$version/squeak" "$@"

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

huzzaaa

Copy link

@eliotmiranda eliotmiranda Jun 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The right way to do this is to use $0, the name with which the startup script is executed, to locate the vm executable, which is relative in the bundle.

so one would say something like

“`dirname $0`/../lib/123456789/squeak” “$@“

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants