Какие файлы участвуют в создании заголовка окна? Например, если вы откроете Rhythmbox, вы увидите название программы в качестве заголовка окна. Но это не генерируется .desktop
файлом. Какие файлы мне нужно отредактировать, чтобы добавить текст в заголовок приложения? Я хочу, чтобы изменения были постоянными
Я использую Ubuntu GNOME 15.04 с GNOME 3.16.
window-manager
xdotool
wmctrl
xprop
Мод Кон
источник
источник
Ответы:
Начальное имя обычно задается (кодом внутри) самого приложения. Однако вы можете изменить его, например, с помощью
xdotool
, который вы должны будете установить первым:Затем, после его установки, вы можете установить другое имя окна с помощью (например) команды:
Это изменится:
в:
Заметка
Как видите, команда существует из:
<current_name>
Должен точно совпадать.Изменить альтернативно
Из вашего комментария я понимаю, что приведенная выше команда не сработала. Я проверил это с различными приложениями, и это сработало ...
Но по причине, которую я не понимаю, НЕ с
Rhytmbox
(!! может быть ошибка)Альтернативой является использование
wmctrl
, которое вы также должны будете установить:Затем используйте команду:
Я успешно проверил это на
Rhythmbox
:Сделать изменения постоянными?
Как уже упоминалось, имя окна по умолчанию определяется в коде приложения.
Для изменения заголовка окна по умолчанию потребуется изменить код. Это может быть сделано, если код доступен, во многих случаях потребуется перекомпиляция и, помимо прочего, это зависит от используемого языка. По моему мнению, общая инструкция была бы совершенно невозможной и выходящей за рамки AU.
РЕДАКТИРОВАТЬ 2
Гибкое управление / установка пользовательских имен окон для приложения из одного файла
В исходном вопросе вам было интересно, существует ли какой-нибудь файл для установки заголовка новых окон определенного приложения. Как объяснено, это не тот случай, однако, он может быть создан.
В приведенной ниже настройке вы можете очень легко определить для каждого приложения, как называются новые окна. Просто создайте файл в
~
(ваш домашний каталог) с именемwindow_names.txt
. Для каждого из приложений, для которого вы хотите задать определенное имя ветра, добавьте строку, затем, приложение и желаемое имя окна:Текстовый файл, определяющий имена окон для приложения
объяснение
Установка существует из простого фонового скрипта. Сценарий очень легкий, поэтому он не окажет заметного влияния на производительность.
После запуска сценария он читает файл
~/window_names.txt
и загружает настройки для каждого приложения. Затем он следит за вновь созданными окнами. Если появляется окно, которое принадлежит одному из приложений, определенных в файле, оно соответственно устанавливает имя окна.Как настроить
Скрипт использует
wmctrl
иxdotool
:Скопируйте скрипт в пустой файл и сохраните его как
setwindowname.py
Создайте файл
~/window_names.txt
(точно названныйwindow_names.txt
), добавьте ваши приложения в формате:например
Имя окна может содержать пробелы.
Протестируйте скрипт из терминала командой:
Если все работает как положено, добавьте его в автозагрузку приложений: Dash> Startup Applications> Add
Обратите внимание, что в некоторых случаях сценарий может сломаться, если он запускается, когда рабочий стол еще не загружен полностью. Если это так, команда для добавления в автозагрузку приложений будет выглядеть так:
Сценарий
Примечания
~/window_names.txt
отредактирован, скрипт необходимо перезапустить.sudo
.источник
xdotool search --name "Rhythmbox" set_window --name "Music"
Я выполнил команду с открытым, закрытым приложением и перезапустил (alt + f2 + r), чтобы проверить, работает ли оно, но оно по-прежнему показывает тот же заголовок окна.Заголовок генерируется исполняемым файлом приложения, и его нелегко отредактировать.
Изменение названия приложения после его открытия:
xdotool
сsudo apt-get install xdotool
pgrep myapp
(т.е.pgrep rythmbox
)Измените заголовок окна (заменив
HERE_THE_PID
его идентификатором процесса приложения):Создание скрипта для запуска любого приложения с произвольным заголовком:
Создайте bash-скрипт
change-title
с таким содержимым:Сделайте его исполняемым с
chmod a+x change-title
./change-title "NewTitle" theapp --its-arguments
Чтобы сделать изменение постоянным:
gksudo gedit /usr/local/bin/custom-title
(fx. User / local / bin / music)sudo chmod a+x /usr/local/bin/custom-title
gksudo gedit /usr/share/applications/rhythmbox.desktop
В этом файле есть строка (номер строки 35 у меня), которая говорит:
Замените его на имя созданного файла:
Чтобы изменение вступило в силу для функции «открыть с»
gksudo gedit /usr/share/applications/rhythmbox-device.desktop
rhythmbox
имя, использованное в предыдущем файле .desktop.sudo kill rhythmbox
(Резюме) Обзор файлов, которые вы должны иметь
Чтобы сделать приложение полностью функциональным, у вас должно быть 3 файла .desktop в
/usr/share/applications
конце:music.desktop
или имя, которое вы дали заявкус помощью
Exec=music
иHidden=true
(добавьте последний, если его нет)rhythmbox.desktop
с
Exec=rhythmbox %U
иHidden=true
Rhythmbox-device.desktop
с
Exec=music --select-source %U
и без скрытого входаЭто означает, что вы всегда открываете последний файл, а заголовок всегда такой, каким он должен быть. Единственный способ перезагрузить себя - это когда вы обновляете сессию ALT + F2 + R.
/usr/local/bin
конечно.Финальные заметки:
--name "\a\b\c"
это исправить ошибку , не заменяйте ее именем приложения!Объяснение
${@:2}
в коде, запрошенном @Maud Kon :$@
массив, в котором хранятся все позиционные параметры${@:2}
означает: все позиционные параметры, кроме первогоДопустим, я называю программу так:
${@:1}
было быfoo bar baz fooz
${@:2}
было быbar baz fooz
${@:3}
было быbaz fooz
${@:4}
было быfooz
${@:5}
пусто, потому что нет больше позиционных параметров.$@
,${@}
И${@:1}
одно и то же: все позиционные параметры.источник
Просто используйте файл перевода!
Я столкнулся с этой самой
проблемнойзадачей с Thunar: Это стало досадно , когда Compiz Scale отображается заголовок окна Thunar как «AnyFolder - файловый менеджер» и пространство с потребляются ненужной информацией.Я попробовал вышеупомянутые способы с
xdotool
и ,wmctrl
но они не являются постоянными , поскольку Thunar меняет заголовок окна каждый раз , когда я иду в другую папку. И было преувеличено иметь сценарий, сидящий на заднем плане, чтобы изменить название каждый раз, когда Тунар меняет его.Более простым решением было использование файла перевода, который поставляется с каждым приложением. Вам просто нужно заново скомпилировать исходный файл перевода с помощью инструмента,
msgfmt
включенного вgettext
пакет. Я просто сделал это для gThumb - просто для удовольствия - и там это тоже работает.1. Получить исходный код для соответствующего приложения.
Введите или перейдите по адресу http://packages.ubuntu.com , найдите источник и найдите папку с именем : она содержит файлы с открытым текстом. Ищите свой язык. Допустим, вы из Бразилии, этот файл будет
$ sudo apt-get source APPLICATION
po
pt_BR.po
2. Измените файл в соответствии с вашими потребностями.
Ищите точное! заголовок окна, от которого вы хотите избавиться или изменить. В случае с Тунаром это был «Файловый менеджер» и
pt_BR.po
я нашелгде
msgid
- сигнал, который посылает приложение, и наmsgstr
что его переводит langpack.Изменения
msgstr
к тому , что вам нравится, то естьmsgstr "o_-"
.Я узнал, что если вы оставите перевод пустым, как это,
msgstr ""
приложение вернется кmsgid
. Если вы хотите, чтобы он был «пустым», используйте пробел. Или точка. Или любой символ в стиле фанк ASCII.3. Получить компилятор.
Как уже упоминалось, вам нужно
msgfmt
изgettext
пакета, поэтому вам нужно набрать$ sudo apt-get install gettext
4. Компиляция
Откройте терминал, перейдите в папку с вашими изменениями
pt_BR.po
и дайте msgfmt проверить файл на наличие ошибок:$ msgfmt --check --check-accelerators=_ -o /dev/null pt_BR.po
если все в порядке, продолжайте и скомпилируйте его:
$ msgfmt -c -o pt_BR.mo pt_BR.po
5. Поместите файл.
Посмотрите, как назван исходный перевод в / usr / share / locale / YOUR_LANGUAGE / LC_MESSAGES / или / usr / share / locale-langpack / YOUR_LANGUAGE / LC_MESSAGES /, и поместите туда свой файл. Если он не существует в обоих местах, поместите его в одно из них и немного поэкспериментируйте с именем файла: строчные буквы, Camelcase или что-то вроде, то есть
gthumb.mo
илиYOUR-APP.mo
.Сначала сделайте резервную копию оригинала: затем скопируйте туда свой новый перевод
$ sudo cp /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo.BAK
$ sudo cp pt_BR.mo /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo
Если YOUR_APP запущен, закройте все его экземпляры.
Проверь это!
Подсказка Если вы используете Ubuntu с EN-локализацией, как я, просто используйте любые * .po, удалите или прокомментируйте все неизмененные пары msgid / msgstr из него и поместите в / usr / share / locale / en / LC_MESSAGES / .
Источники:
http://wiki.xfce.org/translations/translation_guidance_in_xfce
источник
.desktop
файлах: опять же, вы должны перепутать мой ответ с другим, который вы, возможно, прочитали. Ответ не редактирует.desktop
файлы, и при переустановке приложения никаких действий не требуется..desktop
файлы, и я делаю это с файлами переводов. Ты знаешь это? И я могу дать ЛЮБОМУ решению сценария второй шанс, так как теперь я читаю, т.е. "mu__Incoming -", где у меня было "mu__Incoming - File Manager" . Для приложений, которые имеют статический заголовок окна без «пути / к / папке», мои решения работают нормально.Заменить (части) заголовков окон на wmctrl
Так как моего собственного ответа с использованием файла перевода приложения было недостаточно для нескольких случаев, я опирался на решение Якоба Влиима и модифицировал его скрипт, чтобы заменить определенные строки в заголовках окон. Я надеюсь, что это нормально, чтобы опубликовать этот отдельный ответ. Кредиты идут к Якобу Влиму за идею и настройку сценария!
Например, я люблю читать
Some fancy website
вместоSome fancy website - Mozilla Firefox
. Плагин масштаба Compiz теперь намного понятнее, так как я также удалил- File manager
и другие строки.Изменения, которые я сделал:
//
качестве разделителя,window_names.txt
чтобы разрешить пробелыwmctrl
вместо того,xdotool
чтобы изменять заголовок окна (поскольку xdotool не очень хорошо обрабатывает символы, отличные от ASCII):wmctrl -i -r [WindowIdentifier] -N 'new Title'
Модифицированный
window_names.txt
имеет такую структуру:[process name]//[exact text to replace]//[replacement text]
Свернутый скрипт:
Опять же: кредиты идут к Якобу Влейму за идею и настройку сценария!
источник