我想从tcl脚本创建mac桌面快捷方式以编程方式。快捷方式应该运行:
wish /path/to/app.tcl &
我在带有.lnk文件的windows上和带有.desktop文件的linux上执行此操作。到目前为止,我已经用上面的行创建了bash脚本,它几乎没问题,除了两个缺点:它在目标应用程序旁边弹出控制台窗口,它有灰色的终端图标。尽管控制台窗口更糟,但这两件事情都让它看起来很难看。
我理解mac有“别名”文件类似于windows .lnk。这种格式是否支持参数,所以我可以运行“wish app.tcl”?如果是,我如何从tcl创建这样的文件?
在桌面上创建启动器的其他方法没有上述缺点吗?
答案 0 :(得分:2)
使用" Spotlight搜索" 启动 Automator ,即按⌘ 空格键并开始输入" Automator" ,当它正确猜对时,点击 Enter / Return 。
现在告诉您要制作新应用。然后选择左侧的实用程序(图中为1
)并双击其旁边的运行Shell脚本(图中为2
)。
在右侧会打开一个新窗口(图中为3
)并将代码放入其中。
点击File
菜单,然后在桌面上按住alt
键并另存为应用。
接下来,你无疑想要改变那个胖胖的Automator男孩的图标 - 我们可以再说了吗?可能不是 - 哎呀!
无论如何,选择您要用作图标的图像,然后点击空格键然后选择"在预览&中打开预览 #34; 。打开后,按⌘ A ,然后按⌘ C 选择并将其复制到剪贴板。
现在通过单击选择您闪亮的新应用程序,然后按⌘ I 打开其信息窗口。在信息窗口的顶部,左键单击胖男孩,然后从屏幕左上角的菜单中选择Edit
和Paste
,徽标就会更改。完成工作!
答案 1 :(得分:1)
原来.app格式是我需要的。它不是像.lnk或.desktop这样的文件,而是具有特定内容的目录。以下tcl脚本将任何shell脚本和图标包装到.app:
中#!/usr/bin/env tclsh
if {$argc != 3} { error "usage: script-to-app appname script icon.icns" }
lassign $argv appname script icon
file mkdir "$appname.app/Contents/Resources" "$appname.app/Contents/MacOS"
file copy $script "$appname.app/Contents/MacOS/s"
file copy $icon "$appname.app/Contents/Resources/i.icns"
set f [open "$appname.app/Contents/Info.plist" w]
puts $f {
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>s</string>
<key>CFBundleIconFile</key>
<string>i</string>
</dict>
</plist>}
close $f
用法:
script-to-app "My App" run.sh myicon.icns
注1:run.sh需要包含shebang并且是可执行的,否则可能无效。就我而言,它是:
#!/usr/bin/env bash
wish "/path/to/script.tcl"
注2:.icns是一种特殊的苹果图标格式,有在线转换器可以从地球格式制作.icns。
感谢Mark Setchell建议使用自动机,这不是我需要的,而是让我朝着正确的方向前进。