Które pliki są zaangażowane w generowanie tytułu okna? Na przykład, jeśli otworzysz Rhythmbox, zobaczysz nazwę programu jako tytuł okna. Ale nie jest generowany przez .desktop
plik. Które pliki muszę edytować, aby dodać tekst do tytułu aplikacji? Chcę, aby zmiany były trwałe
Używam Ubuntu GNOME 15.04 z GNOME 3.16.
window-manager
xdotool
wmctrl
xprop
Maud Kon
źródło
źródło
Odpowiedzi:
Początkowa nazwa jest zwykle ustawiana przez (kod) samej aplikacji. Możesz go jednak zmienić, np. Za pomocą
xdotool
, który musiałbyś najpierw zainstalować:Następnie po zainstalowaniu możesz ustawić inną nazwę okna (np.) Za pomocą polecenia:
To zmieni:
w:
Uwaga
Jak widać, istnieje polecenie:
<current_name>
Musi dokładnie pasować.Edytuj alternatywnie
Z twojego komentarza rozumiem, że powyższe polecenie nie działało. Testowałem to z różnymi aplikacjami i działało ...
Ale z powodu, którego nie rozumiem, NIE z
Rhytmbox
(może być błąd)Alternatywą jest użycie
wmctrl
, które również musiałbyś zainstalować:Następnie użyj polecenia:
Z powodzeniem przetestowałem to na
Rhythmbox
:Czy zmiany są trwałe?
Jak wspomniano, domyślna nazwa okna jest zdefiniowana w kodzie aplikacji.
Zmiana domyślnego tytułu okna wymaga zmiany kodu. Można to zrobić, jeśli kod jest dostępny, w wielu przypadkach wymagałby ponownej kompilacji i zależy między innymi od używanego języka. Ogólna instrukcja byłaby moim zdaniem niemożliwa i poza (poza) zakresem UA.
EDYCJA 2
Elastycznie zarządzaj / ustaw niestandardowe nazwy okien dla aplikacji z jednego pliku
W swoim pierwotnym pytaniu zastanawiałeś się, czy istnieje jakiś plik do ustawienia tytułu nowych okien konkretnej aplikacji. Jak wyjaśniono, tak nie jest, można go jednak utworzyć.
W poniższej konfiguracji możesz bardzo łatwo zdefiniować, na podstawie nazw aplikacji, nowe okna. Po prostu utwórz plik
~
o nazwie (Twój katalog domowy)window_names.txt
. Dla każdej aplikacji, dla której chcesz ustawić konkretną nazwę okienka, dodaj wiersz, podsekcję, aplikację i żądaną nazwę okna:Plik tekstowy definiujący nazwy okien dla aplikacji
Wyjaśnienie
Istnieje prosty skrypt w tle. Skrypt jest bardzo lekki, więc nie będzie miał żadnego zauważalnego wpływu na wydajność.
Po uruchomieniu skryptu odczytuje plik
~/window_names.txt
i ładuje ustawienia dla poszczególnych aplikacji. Następnie kontroluje nowo utworzone okna. Jeśli pojawi się okno należące do jednej z aplikacji zdefiniowanych w pliku, odpowiednio ustawia nazwę okna.Jak skonfigurować
Skrypt korzysta zarówno
wmctrl
axdotool
:Skopiuj skrypt do pustego pliku i zapisz go jako
setwindowname.py
Utwórz plik
~/window_names.txt
(dokładnie o nazwiewindow_names.txt
), dodaj swoje aplikacje w formacie:na przykład
Nazwa okna może zawierać spacje.
Uruchom skrypt z terminalu za pomocą polecenia:
Jeśli wszystko działa zgodnie z oczekiwaniami, dodaj go do aplikacji startowych: Dash> Aplikacje startowe> Dodaj
Pamiętaj, że w niektórych przypadkach skrypt może się zepsuć, jeśli zostanie uruchomiony, gdy pulpit nie zostanie jeszcze w pełni załadowany. W takim przypadku polecenie dodawania do aplikacji startowych wyglądałoby następująco:
Scenariusz
Notatki
~/window_names.txt
jest edytowany, skrypt musi zostać zrestartowany.sudo
.źródło
xdotool search --name "Rhythmbox" set_window --name "Music"
Wykonałem polecenie z otwartą, zamkniętą aplikacją i uruchomiłem ponownie (alt + f2 + r), aby sprawdzić, czy działa, ale nadal wyświetla ten sam tytuł okna.Tytuł jest generowany przez plik wykonywalny aplikacji i nie ma łatwego sposobu na jego edycję.
Zmiana tytułu aplikacji, gdy jest ona otwarta:
xdotool
pomocąsudo apt-get install xdotool
pgrep myapp
(tj.pgrep rythmbox
)Zmień tytuł okna (zastępując
HERE_THE_PID
go identyfikatorem procesu aplikacji):Tworzenie skryptu w celu uruchomienia dowolnej aplikacji o niestandardowym tytule:
Utwórz skrypt bash o nazwie
change-title
zawartości:Zrób to za pomocą
chmod a+x change-title
./change-title "NewTitle" theapp --its-arguments
Aby zmienić na stałe:
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
W tym pliku znajduje się wiersz (mój numer to 35), który mówi:
Zamień go na nazwę utworzonego pliku:
Aby zmiana była skuteczna dla funkcji „otwórz za pomocą”
gksudo gedit /usr/share/applications/rhythmbox-device.desktop
rhythmbox
nazwę na poprzedni plik .desktop.sudo kill rhythmbox
(Podsumowanie) Przegląd plików, które powinieneś mieć
Aby aplikacja była w pełni funkcjonalna,
/usr/share/applications
po zakończeniu powinny mieć 3 pliki .desktop :music.desktop
lub nazwa nadana aplikacjiz
Exec=music
iHidden=true
(dodaj ostatnią, jeśli nie jest obecna)rhythmbox.desktop
z
Exec=rhythmbox %U
iHidden=true
rhythmbox-device.desktop
z
Exec=music --select-source %U
i bez ukrytego wpisuOznacza to, że zawsze otwierasz ostatni plik, a tytuł jest zawsze taki, jak powinien. Jedynym sposobem, aby się zresetować, jest odświeżenie sesji za pomocą ALT + F2 + R.
/usr/local/bin
oczywiście skrypt bash .Uwagi końcowe:
--name "\a\b\c"
do naprawy błędu , nie zastępuj nazwą aplikacji!Wyjaśnienie
${@:2}
w kodzie żądanym przez @Maud Kon :$@
to tablica przechowująca wszystkie parametry pozycyjne.${@:2}
oznacza: wszystkie parametry pozycyjne oprócz pierwszegoPowiedzmy, że wywołuję program w ten sposób:
${@:1}
byłobyfoo bar baz fooz
${@:2}
byłobybar baz fooz
${@:3}
byłobybaz fooz
${@:4}
byłobyfooz
${@:5}
jest pusty, ponieważ nie ma więcej parametrów pozycyjnych.$@
,${@}
I${@:1}
to samo: Wszystkie parametry pozycyjne.źródło
Wystarczy użyć pliku tłumaczenia!
Natknąłem się na ten bardzo
problemwyzwanie z Thunar: Stało się to denerwujące, gdy Compiz Scale wyświetlał tytuł okna Thunar jako „AnyFolder - Menedżer plików” i zajmował miejsce niepotrzebnymi informacjami.Próbowałem powyższe sposoby z
xdotool
awmctrl
, ale nie były one trwały od Thunar zmienia tytuł okna za każdym razem idę do innego folderu. I przesadnie było mieć skrypt siedzący w tle, aby zmienić tytuł za każdym razem, gdy Thunar go zmienia.Łatwiejszym rozwiązaniem było użycie pliku tłumaczenia dołączonego do każdej aplikacji. Musisz po prostu ponownie skompilować plik źródłowy tłumaczenia za pomocą narzędzia o nazwie
msgfmt
zawartego wgettext
pakiecie. Właśnie zrobiłem to dla gThumb - tylko dla zabawy - i tam też działa.1. Uzyskaj kod źródłowy dla danej aplikacji.
Wpisz lub przejdź na stronę http://packages.ubuntu.com , uzyskaj źródło i poszukaj folderu o nazwie : zawiera on pliki tekstowe. Poszukaj swojego języka. Powiedzmy, że jesteś z Brazylii, ten plik będzie
$ sudo apt-get source APPLICATION
po
pt_BR.po
2. Zmień plik do swoich potrzeb
Poszukaj dokładnie! tytuł okna, którego chcesz się pozbyć lub zmienić. W przypadku Thunara był to „Menedżer plików” i
pt_BR.po
znalazłemgdzie
msgid
jest sygnał wysyłany przez aplikację i namsgstr
co tłumaczy go langpack.Zmień
msgstr
na co chcesz, tjmsgstr "o_-"
.Dowiedziałem się, że jeśli pozostawisz takie tłumaczenie puste,
msgstr ""
aplikacja wróci domsgid
. Jeśli chcesz, aby był „pusty”, użyj białych znaków. Lub kropka. Lub dowolny funky symbol ASCII.3. Pobierz kompilator
Jak wspomniano, potrzebujesz
msgfmt
zgettext
pakietu, więc musisz wpisać$ sudo apt-get install gettext
4. Kompilacja
Otwórz terminal, przejdź do folderu ze zmienionymi
pt_BR.po
plikami i pozwól msgfmt sprawdzić plik pod kątem błędów:$ msgfmt --check --check-accelerators=_ -o /dev/null pt_BR.po
Jeśli jest w porządku, śmiało i skompiluj go:
$ msgfmt -c -o pt_BR.mo pt_BR.po
5. Umieść plik
Sprawdź, jak nazywa się oryginalne tłumaczenie w / usr / share / locale / YOUR_LANGUAGE / LC_MESSAGES / lub / usr / share / locale-langpack / YOUR_LANGUAGE / LC_MESSAGES / i umieść tam swój plik. Jeśli nie istnieje w obu miejscach, umieść go w jednym z nich i poeksperymentuj z nazwą pliku: małe litery, Camelcase lub coś podobnego, tj .
gthumb.mo
LubYOUR-APP.mo
.Najpierw wykonaj kopię zapasową oryginału: skopiuj tam nowe tłumaczenie
$ 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
Jeśli działa YOUR_APP, zamknij wszystkie jego wystąpienia.
Sprawdź to!
Wskazówka Jeśli korzystasz z Ubuntu z lokalizacją EN tak jak ja, po prostu użyj dowolnej * .po, usuń lub skomentuj wszystkie niezmienione pary msgid / msgstr i umieść je w / usr / share / locale / pl / LC_MESSAGES / .
Źródła:
http://wiki.xfce.org/translations/translation_guidance_in_xfce
źródło
.desktop
plikach: znowu, musisz pomylić moją odpowiedź z inną, którą mogłeś przeczytać. Odpowiedź nie powoduje edycji.desktop
plików i po ponownej instalacji aplikacji nie jest wymagane żadne działanie..desktop
pliki i robię to z plikami do tłumaczenia. Znasz to? I mogę dać KAŻDEMU skryptowi drugą szansę, ponieważ teraz czytam, tj. „Mu__Incoming -” gdzie miałem „mu__Incoming - Menedżer plików” . W przypadku aplikacji, które mają statyczny tytuł okna bez „ścieżki / do / folderu”, moje rozwiązania działają dobrze.Zamień (części) tytułów okien na wmctrl
Ponieważ moja własna odpowiedź przy użyciu pliku tłumaczenia aplikacji nie była dla mnie wystarczająca w kilku przypadkach, zbudowałem rozwiązanie Jacoba Vlijma i zmodyfikowałem jego skrypt, aby zastąpić niektóre ciągi znaków w tytułach okien. Mam nadzieję, że w porządku jest opublikowanie tej osobnej odpowiedzi. Podziękowania należą się Jacobowi Vlijmowi za pomysł i przygotowanie skryptu!
Na przykład lubię czytać
Some fancy website
zamiastSome fancy website - Mozilla Firefox
. Wtyczka skali Compiz jest teraz znacznie bardziej przejrzysta, ponieważ usunąłem- File manager
i inne ciągi.Zmiany, które wprowadziłem:
//
jako separatora,window_names.txt
aby umożliwić spacjewmctrl
zamiast,xdotool
aby zmodyfikować tytuł okna (ponieważ xdotool nie obsługuje zbyt dobrze znaków spoza ASCII):wmctrl -i -r [WindowIdentifier] -N 'new Title'
Zmodyfikowany
window_names.txt
ma następującą strukturę:[process name]//[exact text to replace]//[replacement text]
Skąpy skrypt:
Ponownie: Podziękowania dla Jacoba Vlijma za pomysł i przygotowanie skryptu!
źródło