带有参数的Mac OS X .lnk

时间:2018-02-03 17:39:41

标签: macos tcl

我想从tcl脚本创建mac桌面快捷方式以编程方式。快捷方式应该运行:

wish /path/to/app.tcl &

我在带有.lnk文件的windows上和带有.desktop文件的linux上执行此操作。到目前为止,我已经用上面的行创建了bash脚本,它几乎没问题,除了两个缺点:它在目标应用程序旁边弹出控制台窗口,它有灰色的终端图标。尽管控制台窗口更糟,但这两件事情都让它看起来很难看。

  1. 我理解mac有“别名”文件类似于windows .lnk。这种格式是否支持参数,所以我可以运行“wish app.tcl”?如果是,我如何从tcl创建这样的文件?

  2. 在桌面上创建启动器的其他方法没有上述缺点吗?

2 个答案:

答案 0 :(得分:2)

使用" Spotlight搜索" 启动 Automator ,即按 空格键并开始输入" Automator" ,当它正确猜对时,点击 Enter / Return

现在告诉您要制作新应用。然后选择左侧的实用程序(图中为1)并双击其旁边的运行Shell脚本(图中为2)。

在右侧会打开一个新窗口(图中为3)并将代码放入其中。

enter image description here

点击File菜单,然后在桌面上按住alt键并另存为应用

接下来,你无疑想要改变那个胖胖的Automator男孩的图标 - 我们可以再说了吗?可能不是 - 哎呀!

无论如何,选择您要用作图标的图像,然后点击空格键然后选择"在预览&中打开预览 #34; 。打开后,按 A ,然后按 C 选择并将其复制到剪贴板。

现在通过单击选择您闪亮的新应用程序,然后按 I 打开其信息窗口。在信息窗口的顶部,左键单击胖男孩,然后从屏幕左上角的菜单中选择EditPaste,徽标就会更改。完成工作!

答案 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建议使用自动机,这不是我需要的,而是让我朝着正确的方向前进。

相关问题