stogerc 09.05.2010 22:46

Tips & tricksЗапуск системных команд из google chrome

Не так давно я рассказывал про то, как подружить google chrome и magnet-ссылки. Сегодня хочу поведать, как тем же способом немного поизвращаться с хромом и позволить создавать закладки на исполнение системных команд.
Итак, сначала "регистрируем" в xdg-open новый "протокол". Для этого добавляем в конец файла /usr/bin/xdg-open условие обрабатывающие ссылки вида "sys: command", где в последующем command будет любая системная команда.
1
2
3
4
5
if (echo $url | grep '^sys') then
$(echo "$url" | sed 's/sys://;s/%20/ /g;s/%22/"/g;s/%60/`/g;s/%5B//g;s/%23/#/g;s/%5E/^/g;s/%2B/+/g;s/%3C/</g;s/%3E/>/g;s/%7B/{/g;s/%7D/}/g;s/%7C/|/g')
else
open_generic "$url"
fi


Для краткости использовал сокращение sys:, но вы конечно же можете выбрать любое сокращение на свой вкус.
Теперь добавим в закладки например "sys: mpc play", в первый раз хром спросит разрешить-ли запуск утилиты xdg-open, естественно, дадим ему положительный ответ.
Теперь можно добавить закладку на любую системную программу или скрипт.
Немного побаловавшись, можно например сделать закладку на такой скрипт:
1
google-chrome "`mpc current --format 'http://lyrics.wikia.com/api.php?artist=<%artist%>';echo '&'; mpc current --format 'song=<%title%>'`"


Теперь эта закладка будет открывать нам страницу с текстом песни, играющей сейчас в MPD.
Я не силён в написании скриптов, поэтому, если кто может, поправьте пожалуйста мой скриптик =)

Я например добавил себе кнопки управления MPD, и кнопки запуска некоторых программ. Удачных вам экспериментов.

P.S. Используя это, можно сделать интересные расширения для хрома, благо ничего сложного в этом нет.


Тэги: Chrome xdg-open
+ 8 -
Похожие Поделиться

yuretsz 09.05.2010 23:32 #
Насколько это безопасно? Что будет, если злоумышелнник подсунет вам ссылку вида sys://rm%20-rf20%/
stogerc 09.05.2010 23:35 #
А откуда он знает какое у вас сокращение используется? Почему это у вас должно быть "sys:"
yuretsz 09.05.2010 23:43 #
Ну если это вся безопасность, то для расширений такое не подходит.
stogerc 09.05.2010 23:46 #
Ну и ведь ещё команды-то не от рута запускаются.
dfx 09.05.2010 23:53 #
Ну подумаешь, не всю систему снесёт, а только хомяка... кому какое дело, там одна фигня ведь всё-равно...
inkvizitor68sl 09.05.2010 23:53 #
что-то не очень оно работает - перекидывает на страницу поиска в гугле.
stogerc 09.05.2010 23:58 #
Пишете sys:command и не работает?
stogerc 10.05.2010 00:00 #
Если писать в строке адреса, то сложные команды с кавычками или другими знаками не сработают, а если добавлять в закладки, должно работать всё.
inkvizitor68sl 10.05.2010 00:02 #
просто пишу sys:cat (что то же оно выводит) )
конструкцию добавил второй и далее строчками в файл.
stogerc 10.05.2010 00:06 #
Просто после передачи в xdg-open, url ещё надо обработать:
sed 's/sys://;s/%20/ /g;s/%22/"/g;s/%60/`/g;s/%5B//g;s/%23/#/g;s/%5E/^/g;s/%2B/+/g;s/%3C/;s/%3E/>/g;s/%7B/{/g;s/%7D/}/g;s/%7C/|/g'

Скорее всего я просто ещё чего-то не учёл. Покажите пожалуйста конкретно команду, которая не работает.
inkvizitor68sl 10.05.2010 00:10 #
sys:cat
sys:echo
просто sys:
идёт искать в гугл
stogerc 10.05.2010 00:17 #
А хром спрашивал про xdg-open? Может, если случайно нажали отмена, то уже прийдётся только менять сокращение с sys на какое-нибудь другое, потому что мог навсегда запретить "новый протокол" А какая версия браузера?
inkvizitor68sl 10.05.2010 00:38 #
нет, не спрашивал.
stogerc 10.05.2010 00:07 #
Я ещё этой штукой толком не занимался, поэтому тут ещё нужно чуток доработать ;)
dr_lo 10.05.2010 02:54 #
гуглоось в действии? =)
Kraplax 10.05.2010 05:23 #
Да, думаю этот способ будет как нельзя кстати для сборок ХромиумОС =) Надо будет попробовать реализовать - там этого так нехватает :P
stogerc 10.05.2010 10:20 #
Ну я думаю они ещё добавят такой функционал.
Kraplax 10.05.2010 14:57 #
Ну, ждем релиза официальной гугловой сборки ХромиумОС, а пока пользуемся неофициальными сборками ;-)
Kraplax 10.05.2010 05:25 #
На самом деле очень шикарная находка. Если учесть что Хромиум ОС не имеет никаких адекватных средств запуска приложений и т.п. (хотя, консоль там есть), все же запуск прямо из единственного окна (оно же "рабочий стол") было бы очень кстати :D
ZogG 10.05.2010 14:33 #
тогда поставь просто обычную ОС и всё
Kraplax 10.05.2010 14:56 #
Это неинтересно. И иногда полноценная ось - излишний функционал.
melksoft 14.05.2010 19:21 #
А можно как-нибудь из консоли запускать хром в инкогнито? Параметр есть какой-нибудь?