Я настраиваю xmonad. Я изменил терминал на terminal="urxvt" но мне не нравится, что он порождает три процесса для каждого терминала, который я открываю:

~$ ps -fea --forest
fake 16042 12136  0 11:22 ?        00:00:00          \_ /bin/sh -c urxvt
fake 16043 16042  0 11:22 ?        00:00:00          |   \_ urxvt
fake 16044 16043  0 11:22 pts/2    00:00:00          |       \_ bash

Как я могу это исправить? Могу ли я удалить процесс /bin/sh -c urxvt ?

1 ответ1

1

Внутренне XMonad использует spawn в XMonad.Core:

spawn :: MonadIO m => String -> m ()

порождать. Запустите внешнее приложение. В частности, он дважды разветвляется и запускает строку, которую вы передаете в качестве команды /bin/sh .

Таким образом, если кто-то хочет изменить только значение terminal , а не использовать say executeFile напрямую, он должен будет использовать exec в команде оболочки, terminal="exec urxvt" , которая удалит лишний /bin/sh , вызвав его exec команда, а не оболочка, являющаяся родителем процесса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .