On Wed, Aug 5, 2020 at 3:51 PM Marco Trevisan (Treviño) via GitGitGadget <gitgitgadget@xxxxxxxxx> wrote: > To list merge tool candidates we used to use a private GNOME env > variable (GNOME_DESKTOP_SESSION_ID) that has been deprecated for long time ago > and removed as part of GNOME 3.30.0 release [1]. > > So, git should instead check the XDG_CURRENT_DESKTOP env variable, that > is supported by all the desktop environments. > > Since the variable is actually a colon-separated list of names that the current > desktop is known as, we need to go through all the values to ensure > we're using GNOME. > > Signed-off-by: Marco Trevisan (Treviño) <mail@xxxxxxxxx> > --- > diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh > @@ -266,6 +266,19 @@ run_merge_cmd () { > +is_desktop () { > + IFS=':' We usually want to restore the value of IFS after we're done with it. For instance: OLDIFS=$IFS IFS=: and then restore it before returning: IFS=$OLDIFS > + for desktop in ${XDG_CURRENT_DESKTOP} > + do > + if test "$desktop" = "$1" > + then > + return 0 > + fi > + done > + > + return 1 > +} Rather than looping and mucking with IFS, even easier would be: is_desktop () { case ":$XDG_CURRENT_DESKTOP:" in *:$1:*) return 0 ;; *) return 1 ;; esac } But perhaps that's too magical for people? > @@ -275,7 +288,7 @@ list_merge_tool_candidates () { > - if test -n "$GNOME_DESKTOP_SESSION_ID" > + if is_desktop "GNOME" Why do we need to retire the $GNOME_DESKTOP_SESSION_ID check here, thus penalizing people who might still be on an old version of GNOME? It doesn't seem like it would be a maintenance burden to continue checking it while also taking advantage of $XDG_CURRENT_DESKTOP: if test -n "$GNOME_DESKTOP_SESSION_ID" || is_desktop GNOME