[PATCH chere 2/4] chere: add icon to context menu
"Vadim \(vadcx\) via Cygwin-apps" <[email protected]>
| Newsgroups | gmane.os.cygwin.applications |
|---|---|
| Message-ID | <cd69429de155f0fd051f809fa43ec21597e2f892.1754454202.git.vad.git@vad.cx> |
From: "Vadim (vadcx)" <[email protected]> The icon is supposed to be adaptive based on the terminal used, otherwise fallback to Cygwin's default icon found in the installation folder If an icon file is not found, nothing will happen (either blank icon or missing icon). --- src/chere | 70 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 29 deletions(-) diff --git a/src/chere b/src/chere index 4d9730b..9c6b77e 100755 --- a/src/chere +++ b/src/chere @@ -352,11 +352,14 @@ setup_for_term() # command TERM_ARGS="" RUN_ARGS="" + ICON_PATH_WIN="$(cygpath -w "/Cygwin-Terminal.ico")" # optionally takes ",iconID" + local term_has_icon case $1 in cmd ) case $VER in CYGWIN_NT* ) - TERM_EXE=cmd.exe;; + TERM_EXE=cmd.exe + term_has_icon=1;; * ) TERM_EXE=command.com;; esac @@ -370,20 +373,26 @@ setup_for_term() mintty ) TERM_EXE="/bin/mintty.exe" TERM_ARGS="$USER_TERM_OPTIONS" - RUN_EXE="";; # For some reason run.exe breaks mintty + RUN_EXE="" # For some reason run.exe breaks mintty + term_has_icon=1;; xterm ) TERM_EXE="/bin/xterm.exe" TERM_ARGS="-display $DISP $USER_TERM_OPTIONS" - RUN_ARGS="-p /usr/X11R6/bin";; + RUN_ARGS="-p /usr/X11R6/bin" + term_has_icon=1;; * ) - echo $0 Error: Unknown terminal $this_term + echo "$0 Error: Unknown terminal '$this_term'" echo echo Supported terminals: - echo $KNOWN_TERMS + echo "$KNOWN_TERMS" echo echo Use -h for help exit;; esac + + if [ "$term_has_icon" == "1" ]; then + ICON_PATH_WIN="$(cygpath -w "$(command -v "$TERM_EXE")")" + fi } # Setup to install a particular shell. @@ -749,22 +758,24 @@ list_cygwin_registry_keys() # $2 - Shell being installed # $3 - Accelerator # $4 - Command +# $5 - Windows Icon Path # Uses: # FORCE install_context_menu() { - if [ $FORCE = t ] || ! $REGTOOL_ check $1 2> /dev/null ; then + if [ "$FORCE" = t ] || ! $REGTOOL_ check "$1" 2> /dev/null ; then # Make sure the registry key exists create_registry_key "$1" - $REGTOOL -s set $1/ \"$3\" - $REGTOOL add $1/command - $REGTOOL -e set $1/command/ \"$4\" + $REGTOOL -s set "$1/" "\"$3\"" + $REGTOOL -s set "$1/Icon" "\"$5\"" + $REGTOOL add "$1/command" + $REGTOOL -e set "$1/command/" "\"$4\"" else - echo $0 Warning: Not overriding existing entry + echo "$0 Warning: Not overriding existing entry" echo - echo Entry for $2 already exists in the Registry Drive Key - echo Use -f to override existing key. + echo "Entry for '$2' already exists in the Registry Drive Key" + echo "Use -f to override existing key." echo fi } @@ -817,47 +828,48 @@ create_uninstall_item() install() { local TERM_EXE SHELL_EXE SHELL_CMD SHELL_BG_CMD START_CMD ACCEL CPH_DESC UINST_ARG - setup_for_term $1 - setup_for_shell $2 + local ICON_PATH_WIN + setup_for_term "$1" + setup_for_shell "$2" # Check TERM and SHELL are present if [ ! -x "$TERM_EXE" ] && [ "$1" != cmd ]; then if [ $FORCE = t ]; then - echo $0 Warning: $TERM_EXE not found + echo "$0 Warning: TERM_EXE='$TERM_EXE' not found or not executable" else - echo $0 Error: $TERM_EXE not found + echo "$0 Error: TERM_EXE='$TERM_EXE' not found or not executable" echo - echo $TERM_EXE is where I expect to find your $1 - echo Use -f to install anyway. + echo "'$TERM_EXE' is where I expect to find your '$1'" + echo "Use -f to install anyway." exit fi fi if [ ! -x "$SHELL_EXE" ] && [ "$2" != cmd ]; then if [ $FORCE = t ]; then - echo $0 Warning: $SHELL_EXE not found + echo "$0 Warning: SHELL_EXE='$SHELL_EXE' not found or not executable" else - echo $0 Error: $SHELL_EXE not found + echo "$0 Error: SHELL_EXE='$SHELL_EXE' not found or not executable" echo - echo $SHELL_EXE is where I expect to find $2 - echo Use -f to install anyway. + echo "$SHELL_EXE is where I expect to find '$2'" + echo "Use -f to install anyway." exit fi fi - build_start_cmd $1 $2 $METHOD + build_start_cmd "$1" "$2" "$METHOD" ####### Install ########### - install_context_menu $DRIVE_KEY/$PFX$2 $2 "$ACCEL" "$START_CMD $SHELL_CMD" - install_context_menu $DIR_KEY/$PFX$2 $2 "$ACCEL" "$START_CMD $SHELL_CMD" + install_context_menu "$DRIVE_KEY/$PFX$2" "$2" "$ACCEL" "$START_CMD $SHELL_CMD" "$ICON_PATH_WIN" + install_context_menu "$DIR_KEY/$PFX$2" "$2" "$ACCEL" "$START_CMD $SHELL_CMD" "$ICON_PATH_WIN" # Background keys only work on Windows 7. Don't install on XP. - if [ $VER != "CYGWIN_NT-5.1" ] ; then - install_context_menu $DRIVE_BG_KEY/$PFX$2 $2 "$ACCEL" "$START_CMD $SHELL_BG_CMD" - install_context_menu $DIR_BG_KEY/$PFX$2 $2 "$ACCEL" "$START_CMD $SHELL_BG_CMD" + if [ "$VER" != "CYGWIN_NT-5.1" ] ; then + install_context_menu "$DRIVE_BG_KEY/$PFX$2" "$2" "$ACCEL" "$START_CMD $SHELL_BG_CMD" "$ICON_PATH_WIN" + install_context_menu "$DIR_BG_KEY/$PFX$2" "$2" "$ACCEL" "$START_CMD $SHELL_BG_CMD" "$ICON_PATH_WIN" fi if [ $DO_WIN_UINST = t ]; then - create_uninstall_item $UINST_KEY/$PFX$2 $2 + create_uninstall_item "$UINST_KEY/$PFX$2" "$2" fi } -- 2.50.1