diff --git a/dde-open/main.go b/dde-open/main.go index d22b761..27ef34b 100644 --- a/dde-open/main.go +++ b/dde-open/main.go @@ -196,6 +196,22 @@ func openFile(filename string) error { if contentType == "" { return errors.New("failed to get file content type") } + logger.Debugf("content type: %q", contentType) + + // 处理空文件的情况,根据文件扩展名猜测 content type + if contentType == "application/x-zerosize" { + uncerten, guessedType := gio.ContentTypeGuess(filename, nil) + // 不确定,使用默认本文打开 + if uncerten || guessedType == "" { + contentType = "text/plain" + } else if guessedType == "application/x-zerosize" { + contentType = "text/plain" + } else { + logger.Debugf("empty file detected, guessed content type: %q", guessedType) + contentType = guessedType + + } + } appInfo := gio.AppInfoGetDefaultForType(contentType, false) if appInfo == nil { diff --git a/go.mod b/go.mod index 60c2b28..c72ac89 100644 --- a/go.mod +++ b/go.mod @@ -7,9 +7,9 @@ require ( github.com/fogleman/gg v1.3.0 github.com/godbus/dbus/v5 v5.1.0 github.com/gosexy/gettext v0.0.0-20160830220431-74466a0a0c4a - github.com/linuxdeepin/go-dbus-factory v0.0.0-20250808013927-6368d3237cee - github.com/linuxdeepin/go-gir v0.0.0-20250812023606-b28aaee32ac9 - github.com/linuxdeepin/go-lib v0.0.0-20250812091504-ef74b917a73a + github.com/linuxdeepin/go-dbus-factory v0.0.0-20251106065250-e58866b2c218 + github.com/linuxdeepin/go-gir v0.0.0-20251127080441-d9c47dbb6da4 + github.com/linuxdeepin/go-lib v0.0.0-20251106065207-1fdf101312e6 github.com/linuxdeepin/go-x11-client v0.0.0-20230131052004-7503e2337ee1 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 github.com/stretchr/testify v1.8.1 diff --git a/go.sum b/go.sum index 79456d7..95e33de 100644 --- a/go.sum +++ b/go.sum @@ -27,12 +27,13 @@ github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/linuxdeepin/go-dbus-factory v0.0.0-20250808013927-6368d3237cee h1:466thkbIB3la2qlZI/g4Jv4LypN52iFFLGcG+0F2aqM= -github.com/linuxdeepin/go-dbus-factory v0.0.0-20250808013927-6368d3237cee/go.mod h1:iIlTR50SA8MJ9ORPyMOpKWMF4g+AUorbER5AX0RD9Jk= -github.com/linuxdeepin/go-gir v0.0.0-20250812023606-b28aaee32ac9 h1:H95pXIA104lsylGPXXPm8rM+6vVsmKff7sJGGgWMu5A= +github.com/linuxdeepin/go-dbus-factory v0.0.0-20251106065250-e58866b2c218 h1:bifQcTysGUacNXM5PK9IWDPCG8Jb/+JzKwy3w8APYq0= +github.com/linuxdeepin/go-dbus-factory v0.0.0-20251106065250-e58866b2c218/go.mod h1:dfpixHkqiijg3P7w5QArkMyC7+vlHcutN5R6zHIn8is= github.com/linuxdeepin/go-gir v0.0.0-20250812023606-b28aaee32ac9/go.mod h1:a0tox5vepTQu5iO6rdKc4diGT+fkyXZlRROM8ULEvaI= -github.com/linuxdeepin/go-lib v0.0.0-20250812091504-ef74b917a73a h1:G4wz/sQIg/rd6aJ82Sg4IfKMn/2HV5V2Ia0KS7o6Xhs= -github.com/linuxdeepin/go-lib v0.0.0-20250812091504-ef74b917a73a/go.mod h1:2d0hhhqpr9UP9DRgnzU4y6nwdgUtM0qV94Wf0bzAI2g= +github.com/linuxdeepin/go-gir v0.0.0-20251127080441-d9c47dbb6da4 h1:CsW+3eOerOSANbQWEXOWNqJuzl7/W9QIJu9wHvB0g/I= +github.com/linuxdeepin/go-gir v0.0.0-20251127080441-d9c47dbb6da4/go.mod h1:a0tox5vepTQu5iO6rdKc4diGT+fkyXZlRROM8ULEvaI= +github.com/linuxdeepin/go-lib v0.0.0-20251106065207-1fdf101312e6 h1:ntYWER7pULMpTQykPiENOGh7pxSPCspV3Ql8mZA+IBc= +github.com/linuxdeepin/go-lib v0.0.0-20251106065207-1fdf101312e6/go.mod h1:2d0hhhqpr9UP9DRgnzU4y6nwdgUtM0qV94Wf0bzAI2g= github.com/linuxdeepin/go-x11-client v0.0.0-20220830090948-78fe92b727bb/go.mod h1:KwpmRZ47A/0a2l9V0V6aTlkuNaqy5j1fOqMFJONuIMY= github.com/linuxdeepin/go-x11-client v0.0.0-20230131052004-7503e2337ee1 h1:UZo2ftrgFtf5O4jtG0dJ+i/AeFy8LXjNewBRDhwzFxA= github.com/linuxdeepin/go-x11-client v0.0.0-20230131052004-7503e2337ee1/go.mod h1:KwpmRZ47A/0a2l9V0V6aTlkuNaqy5j1fOqMFJONuIMY=