(我在 Arch Linux 上,使用 i3 作為我的 wm,使用 xterm 作為我的終端模擬器,儘管我不知道這些是否相關。)
有時,網站會要求我用滑鼠將檔案從桌面拖曳到網路瀏覽器的視窗中。幾乎總是有一個替代方案,但最近我發現我想做的事情需要拖放。不幸的是,我沒有文件管理器。我僅透過 bash 瀏覽電腦的檔案系統。
有沒有辦法可以偽造拖放操作?我可以告訴我的瀏覽器“我剛剛將此文件丟給了你”而不實際執行嗎?
最糟糕的情況是,我可以專門下載一個圖形文件管理器來將文件放入我的網頁瀏覽器中,但我想避免這種解決方案。
答案1
幾個月前我遇到了完全相同的問題,最後只是寫了一個工具來幫我解決這個問題。當我看到這個並發現其他人也有同樣的渴望時,我清理了它,以便除了我之外的其他人可以真正運行它,並完成我的待辦事項清單。代碼現在已經出來了:https://github.com/mwh/dragon
要獲取它,請運行
git clone https://github.com/mwh/dragon.git
cd dragon
make
這將為您提供一個獨立的dragon
可執行檔 - 您可以將其移動到任何您想要的位置。make install
將把它放進去$HOME/.local/bin
。
無論哪種方式,您都可以:
dragon *.jpg
為每個文件取得一個帶有可拖曳按鈕的簡單視窗:
您可以將其中任何一個拖曳到瀏覽器、文件管理器、編輯器或使用標準拖放協議的任何其他地方。
如果你想走另一條路,拖曳東西在對其進行使用- 它們將被打印到標準輸出,或者如果您也--target
使用的話,可以再次拖出。--keep
要構建,您需要一個 C 編譯器和 GTK+ 3 開發頭檔 - 如果您使用 Arch,您只需安裝 GTK+ 即可獲得這些內容,但在其他發行版上,您可能必須先這樣做apt-get install build-essentials libgtk3-dev
或yum install gtk3-devel
類似。除此之外,它是完全獨立的,沒有組成庫或任何東西,您可以將可執行檔放在您想要的位置。
我的用例主要是一次性拖曳幾個文件(通常只有一個),而不特別關心它們如何顯示,所以如果這與您想要的不符,那麼 Dragbox (直到我才看到它)最近)可能仍然對你更好。就在昨天,我還添加了將其用作拖動目標的支持,因此該部分對我來說並沒有太多用處。但除此之外,我已經成功地使用它有一段時間了。自述文件中描述了其他模式和選項。
答案2
感謝 @derobert 向我推薦 Dragbox 應用程式。
拖曳箱正是我需要的。例如,我有一個包含許多 .png 檔案的資料夾,我希望能夠將它們拖曳到 Chromium 中。在該資料夾內,執行將dragbox *.png
建立此視窗:
我可以使用滑鼠將文件從那裡拖到 Chromium 中,並且它可以完美地工作。然而,走到這一步是很痛苦的。據我所知,Dragbox 僅正式支援 Debian 系統。我在任何地方都找不到它本身適用於 Arch 的地方。因此,我編寫了一份在 Arch Linux 中使用 Dragbox 的逐步指南。這幾乎正是我在我的機器上所做的,進行了一些修改以遵循更好的實踐。如果某個地方有錯誤,你可以查看這個答案的編輯歷史記錄來查看確切地我在我的機器上做了什麼。
- 透過執行以下命令將 Dragbox 的來源克隆到您的計算機
git clone https://github.com/engla/dragbox.git
dragbox
目前工作目錄中將會有一個名為 Create 的新目錄。進去。- Dragbox 和 Dragbox 的安裝需要 Python 2,它是 Arch Linux 的標準配置。然而,它期望 Python 2 成為預設的 Python 安裝,但這在 Arch 上並非如此。透過執行來解決這個問題
export PYTHON=/bin/python2
。在關閉目前終端機視窗之前,環境變數$PYTHON
的值為/bin/python2
。 Dragbox 的安裝腳本會檢查這一點,並將在 Python 3 上使用它。 - 執行
./autogen.sh
、./configure
、make
和make install
。make install
必須使用root權限來完成(例如sudo make install
)。 - Dragbox 現在已安裝在您的電腦上,但將嘗試使用 Python 3 來運行。使用 root 權限,
/usr/local/bin/dragbox
在文字編輯器中開啟。將 shebang(第一行,告訴您的 shell 使用哪個執行檔來執行腳本)從 修改#!/usr/bin/env python
為#!/usr/bin/env python2
。 該腳本現在可以運行,但找不到包含實際程式的模組。有幾種方法可以解決這個問題。
在您的或類似的內容中包含立即
~/.bashrc
讀取的行export PYTHONPATH=$PYTHONPATH:
(例如,之間甚至沒有空格),跟隨我的目錄路徑。現在,Python 在嘗試導入模組時將查找該目錄。在步驟 1 中建立的目錄中,將會有一個名為Dropbox/
(大寫 D)的目錄。將該目錄複製到您新增到的目錄中$PYTHONPATH
(例如,如果您編寫了export PYTHONPATH=$PYTHONPATH:~/python/modules
,請複製該Dragbox/
目錄以建立~/python/modules/Dragbox/
)。可能更糟糕的做法,但您可以將同一目錄複製到
$PYTHONPATH
.例如,您可以將其複製以建立/usr/lib/python2.7/site-packages/
.
如果您已按照這些步驟操作,Dragbox 應該可以正常工作了!現在您可以執行man dragbox
以了解有關如何使用它的更多信息,並只需鍵入 即可啟動它dragbox
。
答案3
剛剛自己解決了這個問題。
最簡單的方法很可能是使用「開啟檔案...」對話方塊。您可以簡單地從 gtk 檔案對話方塊中拖放,就像檔案總管一樣。
您可能需要打開一個單獨的視窗以確保對話方塊不會佔用螢幕。
就是這樣。就這麼簡單。
答案4
zenity
您可以使用命令列工具(例如從那裡拖放)啟動 GTK 檔案對話框。
例子:
zenity --file-selection