better profile support
@desrt
Submitted by Allison Karlitskaya Link to original bug (#719999)
Description
I only recently got around to properly dealing with the removal of --disable-factory and such. I've gotten my gnome-terminal setup to a place where it's working very nice again (probably even better than before), but it could be a bit better.
Here's what I have so far:
-
I have 5 different terminal profiles:
-
default, spadina, jhbuild, lcl, white
- default is pretty typical.
- spadina sshs to my server and connects to my screen (for irssi)
- jhbuild runs 'jhbuild shell'
- lcl runs 'lcl' which is something similar to jhbuild shell
-
spadina has a black background. default has a dark blue background. jhbuild has a dark green background. lcl has a dark red background. I use this to tell them apart when I have lots of windows open.
When I'm outside in bright sunlight and it's difficult to see the screen, I sometimes switch any one of these to 'white', which has a large font and is black-on-white in order to improve visibility. I never want to start a 'white' terminal on its own -- I consider it to be a variation of the other profiles, in a way (I mention it to show that I'm using profiles in two different ways).
For each profile (taking spadina as an example) I have a setup like this:
==> .local/share/applications/ca.desrt.Terminals.spadina.desktop <== [Desktop Entry] Name=spadina Exec=gnome-terminal --app-id ca.desrt.Terminals.spadina --profile=spadina Icon=/home/desrt/.local/share/icons/spadina.png Type=Application Categories=GNOME;GTK;Utility;TerminalEmulator;System; StartupNotify=true X-Desktop-File-Install-Version=0.18
==> .local/share/dbus-1/services/ca.desrt.Terminals.spadina.service <== [D-BUS Service] Name=ca.desrt.Terminals.spadina Exec=/usr/libexec/gnome-terminal-server --app-id ca.desrt.Terminals.spadina --class ca.desrt.Terminals.spadina
This is working pretty nicely. The --class argument is currently being ignored because of bug 685742 but it doesn't matter that much because gnome-shell prefers _GTK_APPLICATION_ID to WMCLASS, if it is set.
Ideally, I'd like to be able to make the following changes:
-
remove the Exec line from the .desktop file
-
change the .desktop file to DBusActivatable=true
-
add a --default-profile= argument to the .service file
-
perhaps prevent profiles other than this one from being started with that instance of the service (but note: should be able to change during runtime to 'white')
-
for the profile 'spadina', this consists of an ssh to my server and connection to my running screen instance. I never want to have more than one of these, so the ability to disable Ctrl+Shift+N and Ctrl+Shift+T for this case would be nice. This is sort of like a single-instance app for which you only ever want one window.
It would also be nice if there was some sort of a UI to automatically configure this for a given profile ("Install profile as application" or so). This could perhaps create an appid org.gnome.Terminal.Profile.UUID_GOES_HERE. This could also be used to find the correct profile when gnome-terminal-server is started with that app-id, instead of having to use --default-profile.
I guess the main TODOs here break down to:
- add --default-profile to the server
- implement GApplication::activate
- add the profile saving UI