История изменений
Исправление KivApple, (текущая версия) :
Самое простое, что приходит в голову - разбить программу на два бинарника. Один запускается от root, другой от юзера. Root слушает клавиши и по сокету шлёт инфу о необходимости переключить раскладку программе запущенной от юзера.
Удобным кажется вариант, что программа запускается от юзера, а затем запускает саму себя же с правильным ключом и через sudo (добавить эту команду в sudoers, чтобы не просила пароль), а затем рутовая часть через stdout выдаёт запросы на переключение раскладки, а пользовательская часть считывает их (она же родитель рутового процесса) и переключает.
Всякие варианты имитации «работая от root прикинуться пользователем» потенциально не очень надёжны и более сложны в реализации. А ещё то что программа целиком работает от root плохо с точки зрения безопасности, лучше всего изолировать минимальную часть, которой нужны права, а остальное гонять от юзера. Также удобно, что юзер может убить пользовательскую часть и рутовая тоже умрёт как дочерний процесс.
Исправление KivApple, :
Самое простое, что приходит в голову - разбить программу на два бинарника. Один запускается от root, другой от юзера. Root слушает клавиши и по сокету шлёт инфу о необходимости переключить раскладку программе запущенной от юзера.
Удобным кажется вариант, что программа запускается от юзера, а затем запускает саму себя же с правильным ключом и через sudo (добавить эту команду в sudoers, чтобы не просила пароль), а затем рутовая часть через stdout выдаёт запросы на переключение раскладки, а пользовательская часть считывает их (она же родитель рутового процесса) и переключает.
Всякие варианты имитации «работая от root прикинуться пользователем» потенциально не очень надёжны и более сложны в реализации. А ещё то что программа целиком работает от root плохо с точки зрения безопасности, лучше всего изолировать минимальную часть, которой нужны права, а остальное гонять от юзера.
Исправление KivApple, :
Самое простое, что приходит в голову - разбить программу на два бинарника. Один запускается от root, другой от юзера. Root слушает клавиши и по сокету шлёт инфу о необходимости переключить раскладку программе запущенной от юзера.
Удобным кажется вариант, что программа запускается от юзера, а затем запускает саму себя же с правильным ключом и через sudo (добавить эту команду в sudoers, чтобы не просила пароль), а затем рутовая часть через stdout выдаёт запросы на переключение раскладки, а пользовательская часть считывает их и переключает.
Всякие варианты имитации «работая от root прикинуться пользователем» потенциально не очень надёжны и более сложны в реализации. А ещё то что программа целиком работает от root плохо с точки зрения безопасности, лучше всего изолировать минимальную часть, которой нужны права, а остальное гонять от юзера.
Исправление KivApple, :
Самое простое, что приходит в голову - разбить программу на два бинарника. Один запускается от root, другой от юзера. Root слушает клавиши и по сокету шлёт инфу о необходимости переключить раскладку программе запущенной от юзера.
Удобным кажется вариант, что программа запускается от юзера, а затем запускает саму себя же с правильным ключом и через sudo (добавить эту команду в sudoers, чтобы не просила пароль), а затем рутовая часть через stdout выдаёт запросы на переключение раскладки, а пользовательская часть считывает их и переключает.
Исправление KivApple, :
Самое простое, что приходит в голову - разбить программу на два бинарника. Один запускается от root, другой от юзера. Root слушает клавиши и по сокету шлёт инфу о необходимости переключить раскладку программе запущенной от юзера.
Удобным кажется вариант, что программа запускается от юзера, а затем запускает саму себя же с правильным ключом и через sudo, а затем рутовая часть через stdout выдаёт запросы на переключение раскладки, а пользовательская часть считывает их и переключает.
Исходная версия KivApple, :
Самое простое, что приходит в голову - разбить программу на два бинарника. Один запускается от root, другой от юзера. Root слушает клавиши и по сокету шлёт инфу о необходимости переключить раскладку программе запущенной от юзера.