При использовании Google Chrome я часто перетаскиваю ссылки на веб-сайты из адресной строки в папку на рабочем столе для дальнейшего использования. Это создает файл .desktop
, который по сути является ссылкой на веб-страницу.
Эти файлы рабочего стола можно легко открыть из Nautilus & PCmanFM, просто дважды щелкнув по ним, чтобы открыть их, однако, когда я открываю их с помощью файлового менеджера SpaceFM, Google Chrome начинает загружать файл, а не открывать его следующим образом: это происходит с другими упомянутыми файловыми менеджерами.
Я могу открыть эти файлы через SpaceFM, если щелкнуть их правой кнопкой мыши и открыть с помощью Firefox, но не в Google Chrome.
Пример файла рабочего стола может быть следующим:
[Desktop Entry]
Encoding=UTF-8
Name=Link to The Hidden Fortress (1958) - IMDb
Type=Link
URL=http://www.imdb.com/title/tt0051808/?ref_=nv_sr_2
Icon=text-html
Есть ли способ заставить эти .desktop
файлы нормально открываться в Google Chrome при запуске из браузера SpaceFM?
Решение ниже предлагает опцию щелкнуть правой кнопкой по ссылке (.desktop
файл), и выбирают>, "Выполняются", который будет работать Google-Chrome
открыть ссылку. Путем редактирования SpaceFm
настройки, можно выполнить ссылку двойным щелчком также (см. примечания [3]
).
Обратите внимание, что решение автоматически редактирует (только) новые ссылки на Ваш рабочий стол, для выполнения ссылки конкретно с Google-Chrome
Маленький фоновый сценарий проверяет однажды в две секунды для нового .desktop
файлы на Вашем Рабочем столе. Если соответствующий файл найден, файл редактируется от Файла связей в Файл приложения. Это сделано путем редактирования двух строк в файле:
Строка:
Type=Link
изменяется в:
Type=Application
Строка:
URL=<link>
изменяется в:
Exec=/usr/bin/google-chrome-stable <link>
В тесте (тестах) я работал, это делает ссылку "открываемой", по справедливости нажимают в SpaceFm
: щелкните правой кнопкой> Открытый>, Выполняются
#!/usr/bin/env python3
import os
import time
# --- define the (absolute) path to your desktop below
dr = "/absolute/path/to/your/desktop"
# edit (if necessary) the command to launch Google-Chrome
application = "/usr/bin/google-chrome-stable"
def find_relevant():
return [f for f in os.listdir(dr) if f.endswith(".desktop")]
relevant1 = []
while True:
time.sleep(2)
relevant2 = [f for f in os.listdir(dr) if f.endswith(".desktop")]
new = [f for f in relevant2 if not f in relevant1]
if new:
for f in new:
f = dr+"/"+f
rewrite = False
lines = [l.strip() for l in open(f).readlines()]
for i, l in enumerate(lines):
if l.startswith("Type=Link"):
rewrite = True
lines[i] = "Type=Application"
elif l.startswith("URL="):
lines[i] = l.replace("URL=", "Exec="+application+" ")
if rewrite == True:
print("rewrite")
open(f, "wt").write(("\n").join(lines))
relevant1 = relevant2
edit_links.py
Проверьте команду для выполнения Google-Chrome
(также установленный в голове - раздел) путем проверки первого Exec=
строка в google-chrome.desktop
файл: выполненный
gedit /usr/share/applications/google-chrome.desktop
считать файл.
Тестовый прогон сценарий командой:
python3 /path/to/edit_links.py
Открытый Google-Chrome
, перетащите ссылки на свой Рабочий стол, тест после нескольких секунд, если он хорошо работает.
Если все хорошо работает, добавьте его для Запущения Приложений: Тире> Приложения Запуска> Добавляет. Добавьте команду:
python3 /path/to/edit_links.py
.desktop
файл (ссылка) должен быть на Вашем Рабочем столе по крайней мере одной-двумя секундами, которые будут найдены и отредактированы, поэтому если Вы перемещаете ссылки, по крайней мере, оставляете их в течение нескольких секунд на Вашем Рабочем столе.:).desktop
файлы на Вашем Рабочем столе, это только читает/редактирует файл (файлы), если существуют новые файлы. Это ничего не значит для Вашей системы.Путем редактирования SpaceFm
настройки, Вы можете alsu выполнять "ссылку" двойным щелчком:
Кроме того, как обсуждено в чате, сценарий для выполнения единственного времени для преобразования ссылок в каталоге рекурсивно:
#!/usr/bin/env python3
import os
import sys
# --- define the (absolute) path to your desktop below
dr = sys.argv[1]
# edit (if necessary) the command to launch Google-Chrome
application = "/usr/bin/google-chrome-stable"
for root, dirs, files in os.walk(dr):
for f in files:
if f.endswith(".desktop"):
f = root+"/"+f
rewrite = False
lines = [l.strip() for l in open(f).readlines()]
for i, l in enumerate(lines):
if l.startswith("Type=Link"):
rewrite = True
lines[i] = "Type=Application"
elif l.startswith("URL="):
lines[i] = l.replace("URL=", "Exec="+application+" ")
if rewrite == True:
open(f, "wt").write(("\n").join(lines))
Для использования его сохраните его как convert_links.py
, выполните его с целенаправленным каталогом как аргумент:
python3 /path/to/convert_links.py <directory>
Согласно просьбе OP, ниже версии (первого) (фон) сценарий, преобразовывая файлы связей, созданные путем перетаскивания ссылки от браузера до рабочего стола, в межплатформенные ссылки. Использование точно как объяснено в первом разделе.
#!/usr/bin/env python3
import os
import time
# --- define the (absolute) path to your desktop below
dr = "/absolute/path/to/your/desktop"
out1 = ["<html>", "<body>", '<script type="text/javascript">']
out2 = ["</script>", "</body>", "</html>"]
def find_relevant():
return [f for f in os.listdir(dr) if f.endswith(".desktop")]
relevant1 = []
while True:
time.sleep(2)
relevant2 = [f for f in os.listdir(dr) if f.endswith(".desktop")]
new = [f for f in relevant2 if not f in relevant1]
if new:
for f in new:
f = dr+"/"+f
rewrite = False
lines = [l.strip() for l in open(f).readlines()]
for i, l in enumerate(lines):
if l.startswith("Type=Link"):
rewrite = True
elif l.startswith("URL="):
url = 'window.location.href = "'+l.replace("URL=", "")+'"'
out1.append(url)
elif l.startswith("Name="):
name = l.replace("Name=", "")
if rewrite == True:
open(f.replace(".desktop", ".html"), "wt").write(("\n").join(out1+out2))
os.remove(f)
relevant1 = relevant2
#!/usr/bin/env python3
import os
import sys
dr = sys.argv[1]
out1 = ["<html>", "<body>", '<script type="text/javascript">']
out2 = ["</script>", "</body>", "</html>"]
for root, dirs, files in os.walk(dr):
for f in files:
if f.endswith(".desktop"):
f = root+"/"+f
rewrite = False
lines = [l.strip() for l in open(f).readlines()]
for i, l in enumerate(lines):
if l.startswith("Type=Link"):
rewrite = True
elif l.startswith("URL="):
url = 'window.location.href = "'+l.replace("URL=", "")+'"'
out1.append(url)
elif l.startswith("Name="):
name = l.replace("Name=", "")
if rewrite == True:
open(f.replace(".desktop", ".html"), "wt").write(("\n").join(out1+out2))
os.remove(f)
Для использования его сохраните его как convert_links.py
, выполните его с целенаправленным каталогом как аргумент:
python3 /path/to/convert_links.py <directory>
Эта версия была основана на этом хорошем ответе на Суперпользователе для создания межплатформенных ссылок.
-nostdinc++ -cxx-isystem=...
. Вы просто описываете различную ситуацию на другом распределении? – Lack 6 May 2018 в 10:35