如何:在 lubuntu 中從 pcmanfm 執行自訂應用程式

如何:在 lubuntu 中從 pcmanfm 執行自訂應用程式

我運行 Lubuntu 14.04.3 LTS 並且我已經下載並安裝卡斯特諾將影片從我的電腦串流到我的 Chromecast。
我知道的唯一選擇是使用 Chromium 透過 Videostream 來完成此操作。但這使用了太多的資源,我可憐的舊筆記型電腦幾乎無法承受......
我發現castnow工作得非常好。但它是一個命令列工具,要啟動它,我必須進入終端機視窗並運行:

castnow --address [ip address chromecast] --myip [localip] [path to video]

這可行,但如果我可以使用文件管理器 ( ) 導航到視頻pcmanfm並打開視頻,我會發現它會更容易。
我嘗試創建一個腳本文件,使用所選文件作為輸入參數(%f)運行上述命令,但我失敗了...

而我親愛的朋友谷歌到目前為止還無法幫助我。誰能幫我完成這件事嗎?

10 月 16 日更新:

我已經快做到了!

最花時間的就是找到pcmanfm中不執行shell腳本的bug。下面的文章很好地描述了這一點並給出了解決方法:https://bugs.launchpad.net/ubuntu/+source/lubuntu-default-settings/+bug/975152

我建立了一個 .desktop 文件,該文件執行腳本並將該文件作為參數傳遞。這在選單中顯示為選項,這樣您也可以在 pcmanfm 中選擇它。

該腳本將檔案名稱作為參數,並使用所有參數執行castnow。不幸的是它不起作用。

我創建的腳本是這樣的:

filename=$1
filename=${filename:7:$((${#filename}-7))}
filename=${filename//%20/\\ }
echo castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
castnow --address 192.168.0.21 --myip 192.168.0.47 $filename

結果是:

castnow --address 192.168.0.21 --myip 192.168.0.47 /home/joost/Videos/American\ Horror\ Story\ Season\ 1\ Complete\ 480p\ BZINGAZ/american.horror.story.s01e11.720p.hdtv.x264-compulsion.mkv
Error: Load failed

當我將命令複製到另一個終端機視窗時,它就可以工作了。怎麼會這樣?以及如何解決。

另一個更新:

該問題似乎與路徑中的空格有關。桌面檔案使用 %u 參數將路徑傳送到 bash 腳本。由於該資料夾中有一些空格,它們被轉換為 %20 在腳本中我將它們轉換回“\”。如果我用一個沒有空格的文件測試我的東西,它就可以工作(!!!)。

但空間是生活的一部分。如何解決這個問題?

還有另一個更新:

我做到了!雖然有一些技巧,但它確實有效。我在腳本中添加了一些行,以用下劃線替換檔案系統上的所有空格:

#!/bin/bash
# replace all spaces by underscores in the Videos-folders and -files:
find /home/joost/Videos/ -name "* *" -type d | rename 's/ /_/g'    # do the directories first
find /home/joost/Videos/ -name "* *" -type f | rename 's/ /_/g'
filename=$1
# remove file:// from the file-variable:
filename=${filename:7:$((${#filename}-7))}
# new films may contain spaces in the path. They have been replace by underscores. This also needs to happen in the parameter:
filename=${filename//%20/_}
# now we are ready to go:
castnow --address 192.168.0.21 --myip 192.168.0.47 $filename
read

它有效,我對此感到滿意。但如果有人知道如何繞過這些空間,我會很高興知道。

10 月 18 日更新:

我已經找到瞭如何繞過空格(和其他特殊字元)。首先我找到如何對參數進行 urldecode。但繞過空格(和其他特殊字元)的技巧是在語句中添加“eval”。所以我的腳本中的最後一個語句現在是: evalcastnow --address 192.168.0.21 --myip 192.168.0.47 $filename

就是這樣了。唯一剩下的問題是castnow 似乎無法播放avi 檔案。我在 github 上為此創建了一個問題。

答案1

您可以設定用於相關文件類型的預設應用程式:右鍵單擊視訊文件,選擇“屬性”,變更“開啟方式”選擇,然後按確定。

相關內容