#COMPILE EXE "exeiconinunix.exe" #DIM ALL #REGISTER NONE #RESOURCE "exeiconinunix.pbr" MACRO MyMsgBox(hd,m,t,st) = MessageBox(hd,m,t,st) #INCLUDE ONCE "Win32Api.inc" #INCLUDE ONCE "inc/exe2unix.inc" '-------------------------------------------------------------------------------- FUNCTION PBMAIN LOCAL src AS STRING LOCAL png AS STRING LOCAL lRes AS LONG ' Create exe icon in Unix dock and Unix file explorer Me2Unix 0, 1 ' askConfirmation=%FALSE, showInAppMenu=%TRUE ' Are we under Linux? IF NOT IsOnUnix() THEN ?"This program must be run under Unix.", _ %MB_ICONWARNING, EXE.NAME$ EXIT FUNCTION END IF ' Select executable (if not provided as argument) IF RIGHT$(LCASE$(TRIM$(COMMAND$,$DQ)), 4) = ".exe" THEN src = COMMAND$ ELSE DISPLAY OPENFILE 0, , , "Select file...", "", _ CHR$("Executable (*.exe)", 0, "*.exe", 0), _ "", "", %OFN_FILEMUSTEXIST OR %OFN_SHOWHELP OR _ %OFN_NONETWORKBUTTON OR %OFN_ENABLESIZING TO src IF src = "" THEN EXIT FUNCTION ' canceled by user END IF ' Extract exe icon and convert to png in ~/.local/share/icons png = IcoStrip2Unix(src) ' Error extracting icon IF RIGHT$(png,4) <> ".png" THEN ?"Error extracting icon from executable.", %MB_ICONWARNING, EXE.NAME$ EXIT FUNCTION END IF ' Ask user confirmation lRes = ?("Would you like to display " _ + $DQ + PATHNAME$(NAMEX,src) + $DQ _ + " icon in the Linux File Explorer ?" _ , %MB_ICONQUESTION + %MB_YESNO _ , EXE.NAME$) IF lRes = %IDNO THEN EXIT FUNCTION ' Display exe icon in Nautilus FileIco2Unix src, png ' Done! ?PATHNAME$(NAME, src) + " icon successfully set! "+$CR _ +"Hit F5 in Linux explorer to refresh." _ ,%MB_ICONINFORMATION, EXE.NAME$ END FUNCTION '--------------------------------------------------------------------------------