Видео смотреть бесплатно

Смотреть казахский видео

Официальный сайт synclub 24/7/365

Смотреть видео бесплатно

29.03.2010 15:26

angrycoreПолезные мелочи с использованием DBUS в KDE

D-Bus — это система межпроцессного взаимодействия, разработанная в рамках проекта freedesktop.org. Подробнее можно почитать например на википедии.
В рамках данной заметки D-Bus будет рассматриваться и использоваться исключительно как способ контролировать графические приложения из консоли.
Являясь поклонником двухпанельных файловых менеджеров типа krusader'а (в основном из-за возможности управляться с ними исключительно используя клавиатуру) и выпадающих терминалов типа yakuake (удачное и удобное решение при наличии нескольких рабочих столов), всегда задавался вопросом как улучшить их взаимную интеграцию, а также прикрутить полезные возможности второго к первому.
Выношу вам на суд своё решение этой проблемы:
1
2
3
4
5
6
7
#!/bin/bash
if [ `qdbus org.krusader /krusader/MainWindow_1 Get com.trolltech.Qt.QWidget visible` = true ]
then
qdbus org.krusader /krusader/MainWindow_1 com.trolltech.Qt.QWidget.hide
else
qdbus org.krusader /krusader/MainWindow_1 com.trolltech.Qt.QWidget.show
fi

Как несложно понять, этот микроскопический скрипт прячет окно krusader'а, если оно не спрятано, и показывает в противном случае. Запуск скрипта у меня висит на комбинации клавиш super+space. Достаточно удобный способ быстро достучаться до менеджера фалов на каком рабочем столе бы вы не находились (конечно krusader должен запускаться вместе с kde и сворачиваться после старта в область уведомлений, что несложно настроить в настройках самой программы).
Так как нередко возникает необходимость открыть окно терминала в каталоге, уже открытом в панели файлового менеджера, был написан ещё один микро-скрипт:
1
2
3
4
5
#!/bin/bash
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.addSession
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.runCommand "cd \"`pwd`"\"
qdbus org.kde.yakuake /yakuake/sessions org.kde.yakuake.runCommand clear
qdbus org.kde.yakuake /yakuake/window org.kde.yakuake.toggleWindowState

Скрипт висит в krusader'е в качестве действия по комбинации клавиш Alt+Y. При запуске он добавляет в запущенный в фоне yakuake новую вкладку, выполняет там переход в нужный каталог, очищает терминал, ну и вызывает окно терминала на передний план.
Поскольку при таком подходе владки в терминале начали множиться достаточно активно, возникла необходимость индетификации каждой из вкладок, для этого в ~/.bashrc была добавлена следующая строка:
1
export PROMPT_COMMAND='~/.bin/scripts/terminal_title.bash 1>/dev/null 2>/dev/null'


Теперь перед каждым показом приглашения командной строки bash будет выполнять скрипт ~/.bin/scripts/terminal_title.bash
А вот и содержимое самого скрипта:
1
2
3
4
5
#!/bin/bash
if [ `qdbus org.kde.yakuake /yakuake/MainWindow_1 Get com.trolltech.Qt.QWidget isActiveWindow` = true ]
then
qdbus org.kde.yakuake /yakuake/tabs setTabTitle `qdbus org.kde.yakuake /yakuake/sessions activeSessionId` "`pwd`" 1>/dev/null 2>/dev/null
fi

Скрипт проверят акривно ли окно yakuake и устанавливает в качестве названия вкладки адрес каталога, который в этой вкладке открыт.
Было бы интересно узнать кто ещё какие приёмы, облегчающие работу за компьютером, использует.


Тэги: bash dbus KDE4 krusader yakuake скрипты
+ 8 -
Похожие Поделиться

haku 29.03.2010 19:58 #
+ 0 -
Ещё б пару мини-скринов, показывающих названия вкладок до и после, но в целом хорошо, плюсую.
digiwhite 29.03.2010 21:16 #
+ 0 -
А насколько оно быстро работает? Тут был эксперимент совместной работы festival, dbus и notify-send (тыц), так оно при параллельной работе с аськой жутко тупит.
angrycore 30.03.2010 00:38 #
+ 0 -
Работает быстро. Каких-то конкретных цифр привести не могу, но на глаз срабатывает мгновенно. (компьютер у меня: CoreDuo T2050 @ 1.60GHz, 2 GB RAM)
Shtsh 30.03.2010 02:15 #
+ 0 -
можно померить скорость командой time
angrycore 30.03.2010 11:06 #
+ 0 -
Навскидку получается вот так:
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ time ./qkrusader.bash
real 0m0.097s
user 0m0.042s
sys 0m0.011s

$ time ./yakuake_here.bash
real 0m0.141s
user 0m0.059s
sys 0m0.008s

$ time ./terminal_title.bash
real 0m0.082s
user 0m0.046s
sys 0m0.008s

booley 30.03.2010 07:12 #
+ 0 -
Почему именно в KDE? Сейчас попробую :)

Смотреть онлайн бесплатно

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн