如何在RVM环境中为Redcar创建一个Unity启动器图标?

Redcar 是一个通过 Ruby gem 安装的图形应用程序,我已经在由 RVM 管理的 Ruby 环境中安装了它。

没有自动安装启动器图标,所以我需要自己创建一个。我尝试使用 Unity 的 "保持在启动器中" 选项来显示 Redcar 运行时的图标:

Redcar and Unity

但是当我退出Redcar然后点击启动器图标时,图标只会闪烁,Redcar不会打开。
我该如何创建一个可用的启动器图标?
我尝试创建`~/.local/share/applications/redcar.desktop`文件,并包含以下内容:
[Desktop Entry]
Type=Application
Version=1.0
Name=Redcar
Comment=A programmer's text editor written in Ruby!
Icon=/home/ak/.rvm/gems/ruby-1.9.2-p290/gems/redcar-0.11/share/icons/redcar-icon-beta.png
Exec=/home/ak/.rvm/gems/ruby-1.9.2-p290/bin/redcar
Categories=Development;IDE;

文件是可执行的,当我在Nautilus中浏览到~/.local/share/applications时,它显示为Redcar图标,但是当我双击它时没有任何反应。当我在终端中输入/home/ak/.rvm/gems/ruby-1.9.2-p290/bin/redcar时,Redcar可以正常运行。

我更新了我的回答,希望对你有用。 - jrg
3个回答

Ruby gems被安装到RVM的~/.rvm/gems/ruby-$version@$gemset/目录下。
首先,下载这个图标并保存到~/.local/share/icons/redcar.png
现在,将以下内容保存到~/bin/redcar.sh文件中,并使用chmod +x ~/bin/redcar.sh命令使其可执行。
#!/bin/bash
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then

  \# First try to load from a user install
  source "$HOME/.rvm/scripts/rvm"

elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then

  \# Then try to load from a root install
  source "/usr/local/rvm/scripts/rvm"

else

  printf "ERROR: An RVM installation was not found.\n"

fi

rvm use 1.9.3@redcar-install
gem install redcar
redcar

现在,您需要手动创建一个桌面文件,指向正确的可执行文件和图标。它应该类似于:
[Desktop Entry]
Type=Application
Version=1.0
Name=Redcar
Comment=A programmer’s text editor written in Ruby and Java.
Icon=~/.local/share/icons/redcar.png
Exec=~/bin/redcar.sh
Categories=Development;IDE;

将其放置在~/.local/share/applications/redcar.desktop中。然后它应该出现在Dash搜索中,然后您就可以将其拖动到启动器上。

如果有人对上述的工作方法并不完全满意,那么这是我的酷炫安装脚本,应该可以完成所有的工作(哦,好吧,如果你想要将启动器拖到 Dock 上,你需要自己去做)。之后,redcar 将出现在 Dash 搜索中,可以添加到启动器,并且可以通过 redcar 命令从命令行启动。它假定 rvm 已经安装(按用户安装),我猜你需要 Java 才能使 jruby 正常工作。
#!/bin/bash

echo "Ensure users local bin dir exists"
[[ ! -d ~/bin ]] && mkdir ~/bin
echo "done."

echo "Install jruby and redcar gem wrapping it to a wrapper"
rvm install jruby &&
rvm jruby@redcar --create &&
gem install redcar &&
redcar install &&
rvm wrapper jruby@redcar wrapped redcar &&
echo "For rvm to work properly with gnome shell make sure gnome shell session is set to use login shell" &&
echo "Adding alias to ~/.bash_login\nalias redcar=wrapped_recar" &&
echo -e '\nalias redcar=wrapped_redcar' >> ~/.bash_login &&
echo "Creating a wrapper script to ~/bin for launching the app from launcher" &&
echo '#!/bin/bash
shopt -s expand_aliases
[[ -f ~/.rvm/scripts/rvm ]] && . ~/.rvm/scripts/rvm
alias redcar=wrapped_redcar
redcar' > ~/bin/redcar.sh &&
chmod u=rwx,og=r ~/bin/redcar.sh &&
echo "Creating launcher icon" &&
echo "[Desktop Entry]
Type=Application
Version=`redcar -v`
Name=Redcar
Comment=A programmer’s text editor written in Ruby and Java.
Icon=`find ~/.rvm -name redcar-icon-beta.png`
Exec=~/bin/redcar.sh
Categories=Development;IDE;" > ~/.local/share/applications/redcar.desktop

Ruby gems被安装到/var/lib/gems/1.8/,你需要手动创建一个桌面文件,指向正确的可执行文件和图标。它应该看起来像这样:
[Desktop Entry]
Type=Application
Version=1.0
Name=Redcar
Comment=A programmer’s text editor written in Ruby!
Icon=/var/lib/gems/1.8/gems/redcar-0.11/share/icons/redcar-icon-beta
Exec=/var/lib/gems/1.8/gems/redcar-0.11/bin/redcar
Categories=Development;IDE;

将其放置在~/.local/share/applications/redcar.desktop。然后它应该出现在Dash中,你应该能够将其拖到Launcher上。

有关在Unity中创建自定义启动器的更一般信息,请参阅此问题:

我如何手动编辑/创建新的Unity启动器项目?