Я использую (и люблю!) XMonad в качестве оконного менеджера. Однако я не уверен, как реализовать сочетание клавиш, которое может spawn
создать новый процесс/окно с рабочим каталогом текущего окна.
Я думаю, что эта проблема состоит из двух частей: определение рабочего каталога активного в данный момент окна и создание процесса с заданным рабочим каталогом.
Для порождения процесса я в настоящее время использую хак, в котором я порождаю /bin/sh
, который cd
в нужном месте, а затем запускает программу. Есть ли более элегантный способ сделать это?
Для определения рабочего каталога текущего окна я понятия не имею, как это сделать. Быстрый поиск по xmonad-contrib
ничего не дал, хотя мог что-то упустить. Является ли это атрибутом, который X делает доступным для оконного менеджера? Может быть, я мог бы сделать что-нибудь с деревом /proc
?
spawn
уже взывает к /bin/sh
, так что вы можете просто вставить cd
в созданную вами вещь, как в spawn "cd /very/good/directory && very-good-executable --very --good --arguments"
.
Нет даже надежного способа определить, какой процесс связан с данным окном, и даже если бы вы могли, он мог бы даже не работать на этой машине! -- не говоря уже о его рабочем каталоге. Но см. также атом _NET_WM_PID
, который иногда доступен, и этот вопрос на бирже стека Unix.
@ddulaney getAtom
Ой. Идеально! Спасибо!
Спасибо! Вы знаете, как получить доступ к
_NET_WM_PID
из XMonad? Я вижу это вxprop
, но нет очевидной функции Haskell, которая его получает.