Làm thế nào để tôi thay đổi vĩnh viễn tiêu đề cửa sổ?


17

Những tập tin nào có liên quan đến việc tạo tiêu đề cửa sổ? Ví dụ: nếu bạn mở Rhybeatbox, bạn sẽ thấy tên chương trình là tiêu đề cửa sổ. Nhưng nó không được tạo bởi .desktoptập tin. Tôi cần chỉnh sửa tập tin nào để thêm văn bản vào tiêu đề của ứng dụng? Tôi muốn những thay đổi là vĩnh viễn

Tôi sử dụng Ubuntu Gnome 15.04 với Gnome 3.16.


Chào Maud. Tôi thích câu hỏi của bạn, và nó đã dẫn đến một giải pháp rất hay. Tuy nhiên, tôi không thể cưỡng lại việc đề cập đến một điều cần lưu ý cho các câu hỏi trong tương lai: vui lòng không thay đổi mạnh mẽ ý nghĩa của câu hỏi sau khi câu trả lời đã được đăng. Nó làm cho câu trả lời, ban đầu được đăng đầy đủ trên phiên bản đầu tiên của câu hỏi, dường như bị đặt sai chỗ trên phiên bản chỉnh sửa. Tôi nghĩ đó là những gì thực sự xảy ra với câu trả lời của tôi. Tôi sẽ đề nghị đăng một câu hỏi mới thay vào đó, cụ thể hơn cho câu hỏi thực sự của bạn nếu nghĩ lại câu hỏi của bạn.
Jacob Vlijm

1
Tôi hiểu ý kiến ​​của bạn và tôi chắc chắn sẽ làm điều đó với các câu hỏi trong tương lai vì tôi có thể thấy nó có thể khá khó hiểu đối với mọi người. Tôi chắc chắn không đánh giá thấp sự đóng góp của bạn cho chủ đề, hãy để nó rõ ràng. Tôi muốn tiêu đề cụ thể hơn vì tiêu đề ban đầu không thực sự bao gồm câu hỏi thực sự của tôi và đưa ra một chút không chắc chắn về mục tiêu của tôi với chủ đề này. Cảm ơn bạn đã giúp đỡ! :)
Maud Kon

Câu trả lời:


21

Tên ban đầu thường được đặt bởi (mã bên trong) chính ứng dụng. Tuy nhiên, bạn có thể thay đổi nó, ví dụ bằng cách sử dụng xdotool, mà bạn sẽ phải cài đặt trước:

sudo apt-get install xdotool

Sau đó, khi được cài đặt, bạn có thể đặt tên cửa sổ khác bằng (ví dụ) lệnh:

xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"

Điều này sẽ thay đổi:

nhập mô tả hình ảnh ở đây

vào:

nhập mô tả hình ảnh ở đây

Ghi chú

Như bạn có thể thấy, lệnh tồn tại của:

xdotool search --name "<current_name>" set_window --name "<new_name>"

Các <current_name>có khớp chính xác.


Chỉnh sửa thay thế

Từ nhận xét của bạn, tôi hiểu lệnh trên không hoạt động. Tôi đã thử nghiệm nó với các ứng dụng khác nhau và nó đã hoạt động ...

Nhưng vì một lý do tôi không hiểu, KHÔNG với Rhytmbox(!! có thể là một lỗi)

Một cách khác là sử dụng wmctrl, mà bạn cũng sẽ phải cài đặt:

sudo apt-get install wmctrl

Sau đó sử dụng lệnh:

xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"

Tôi đã thử nó trên Rhythmbox:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Làm cho những thay đổi vĩnh viễn?

Như đã đề cập, tên cửa sổ mặc định được xác định trong mã của ứng dụng.

Thay đổi tiêu đề cửa sổ mặc định sẽ cần phải thay đổi mã. Điều đó có thể được thực hiện nếu mã có sẵn, sẽ cần biên dịch lại trong nhiều trường hợp và phụ thuộc vào ngôn ngữ được sử dụng, trong số những thứ khác. Theo tôi, một hướng dẫn chung sẽ khá bất khả thi và vượt ra ngoài phạm vi của AU.


CHỈNH SỬA 2

Quản lý linh hoạt / đặt tên cửa sổ tùy chỉnh cho mỗi ứng dụng từ một tệp duy nhất

Trong câu hỏi ban đầu của bạn, bạn đã tự hỏi nếu có một loại tệp nào đó để đặt tiêu đề của các cửa sổ mới của một ứng dụng cụ thể. Như đã giải thích, đó không phải là trường hợp, tuy nhiên, nó có thể được tạo ra.

Trong thiết lập bên dưới, bạn có thể dễ dàng xác định trên cơ sở cho mỗi ứng dụng về cách các cửa sổ mới được đặt tên. Đơn giản chỉ cần tạo một tập tin trong ~(thư mục nhà của bạn), được đặt tên window_names.txt. Đối với mỗi ứng dụng bạn muốn đặt một Windowname cụ thể, hãy thêm một dòng, sau đó, ứng dụng và tên cửa sổ mong muốn:

Một tệp văn bản, xác định tên cửa sổ cho mỗi ứng dụng

gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts

nhập mô tả hình ảnh ở đây

Giải trình

Các thiết lập tồn tại của một kịch bản nền đơn giản. Kịch bản rất nhẹ, vì vậy nó sẽ không có bất kỳ ảnh hưởng đáng chú ý nào đến hiệu suất.

Khi tập lệnh bắt đầu, nó sẽ đọc tệp ~/window_names.txtvà tải các cài đặt cho mỗi ứng dụng. Sau đó, nó để mắt đến các cửa sổ mới được tạo ra. Nếu một cửa sổ xuất hiện thuộc về một trong các ứng dụng, được xác định trong tệp, nó sẽ đặt tên cửa sổ tương ứng.

Làm thế nào để thiết lập

  1. Kịch bản sử dụng cả hai wmctrlxdotool:

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
  2. Sao chép tập lệnh vào một tập tin trống lưu nó dưới dạng setwindowname.py

  3. Tạo tệp ~/window_names.txt(được đặt tên chính xác window_names.txt), thêm ứng dụng của bạn ở định dạng:

    <application> <window_name>
    

    ví dụ

    gedit Text editor
    

    Tên cửa sổ có thể bao gồm khoảng trắng.

  4. Chạy thử tập lệnh từ thiết bị đầu cuối bằng lệnh:

    python3 /path/to/setwindowname.py
    
  5. Nếu tất cả đều hoạt động như mong đợi, hãy thêm nó vào các ứng dụng khởi động: Dash> Ứng dụng khởi động> Thêm

    Lưu ý rằng trong một số trường hợp, tập lệnh có thể bị hỏng nếu nó khởi động khi máy tính để bàn chưa được tải đầy đủ. Nếu đó là trường hợp, lệnh để thêm vào các ứng dụng khởi động sẽ là:

    /bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
    

Kịch bản

#!/usr/bin/env python3
import subprocess
import time
import os

f = os.environ["HOME"]+"/"+"window_names.txt"

change = []
lines = open(f).read().splitlines()
for l in lines:
    try:
        change.append([l.split()[0], (" ").join(l.split()[1:])])
    except IndexError:
        pass

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
curr_1 = []

while True:
    try:
        curr_2 = get(["wmctrl", "-lp"]).splitlines()
        new = [w for w in curr_2 if not w in curr_1]
        for item in new:
            line = item.split(); pid = line[2]
            procs = get(["ps", "-e"]).splitlines()
            match = [l for l in procs if pid in l][0]
            for app in [app for app in change if app[0] in match]:
                subprocess.Popen(["xdotool", "set_window", "--name", app[1], line[0]])
        curr_1 = curr_2
        time.sleep(0.3)
    except:
        pass

Ghi chú

  • Nếu tập tin ~/window_names.txtđược chỉnh sửa, tập lệnh cần phải được khởi động lại.
  • Nó hoạt động cho dù ứng dụng được khởi động như thế nào; nó cũng hoạt động khi các ứng dụng được chạy từ thiết bị đầu cuối / và hoặc với sudo.
  • Nó không can thiệp vào tùy chọn nhấp chuột phải của bất kỳ ứng dụng nào .
  • Kịch bản cũng "duy trì" tên cửa sổ; nếu một quá trình khác thay đổi tên cửa sổ sau đó (mở các tab, thay đổi thư mục, ví dụ) tập lệnh sẽ xem cửa sổ là "cửa sổ mới" và duy trì tên cửa sổ bạn chọn.

Tôi xin lỗi, điều này đã không làm việc cho tôi.
Maud Kon

xdotool search --name "Rhythmbox" set_window --name "Music" Tôi đã thực hiện lệnh với ứng dụng mở, đóng và thực hiện khởi động lại (alt + f2 + r) để kiểm tra xem nó có hoạt động không, nhưng nó vẫn hiển thị cùng tiêu đề cửa sổ.
Maud Kon

Ồ Lần này tôi thực sự ấn tượng! Tôi sẽ thử nó vào buổi sáng. Tôi phải nói rằng, điều này có vẻ rất hứa hẹn :) cảm ơn bạn đã làm việc chăm chỉ và đăng bài này, Jacob!
Maud Kon

Tôi đã thử kịch bản chính xác như bạn nói, nhưng nó không hoạt động. Có thể điều này sẽ không hoạt động với Gnome 3.16 hay nó sẽ là thứ gì đó trong thiết lập của tôi? Tôi đang bối rối với nó bây giờ và hy vọng làm cho nó hoạt động trên hệ thống của tôi. Nếu tôi tìm thấy lý do tại sao nó không hoạt động, tôi sẽ liên lạc lại với bạn càng sớm càng tốt.
Maud Kon

1
@MaudKon Bạn phải chỉnh sửa tệp cài đặt và vô tình thêm một hoặc nhiều danh sách trắng, có thể ở cuối. Tôi "chủng ngừa" kịch bản cho điều đó. Bạn có thể sử dụng bao nhiêu danh sách trắng như bạn muốn bây giờ :)
Jacob Vlijm

9

Tiêu đề được tạo bởi ứng dụng thực thi và không có cách nào dễ dàng để chỉnh sửa nó.


Thay đổi tiêu đề của ứng dụng một khi nó mở:

  • Cài đặt xdotoolvớisudo apt-get install xdotool
  • Lấy pid của ứng dụng với pgrep myapp(tức là pgrep rythmbox)
  • Thay đổi tiêu đề cửa sổ (thay thế HERE_THE_PIDbằng id quá trình của ứng dụng):

    xdotool search --onlyvisible --pid HERE_THE_PID --name "\a\b\c" set_window --name "$new_name"
    

Tạo tập lệnh để khởi chạy bất kỳ ứng dụng nào có tiêu đề tùy chỉnh:

  • Tạo một tập lệnh bash được gọi change-titlevới các nội dung sau:

    #!/bin/bash
    
    ## The new name of the window is the first argument passed to the script:
    new_name="${1}"
    
    ## application is all arguments but the first (the title)
    application=${@:2}
    
    ## Run the app in background and in quiet mode:
    $application &> /dev/null &
    
    ## Get the pid of the app:
    app_pid=$!
    
    ## Wait until the window appears:
    until xdotool search --onlyvisible --pid $app_pid &> /dev/null; do sleep 0.01; done
    
    ## Change the window name:
    xdotool \
             search \
                    --onlyvisible \
                    --pid $app_pid \
                    --name "\a\b\c" \
             set_window \
                    --name "$new_name"
    
    ## Comment this line to run the app in background:
    wait $app_pid
    
  • Làm cho nó thực thi được với chmod a+x change-title

  • Chạy nó với ./change-title "NewTitle" theapp --its-arguments

Để thay đổi vĩnh viễn:

  • Chạy gksudo gedit /usr/local/bin/custom-title(fx. Người dùng / cục bộ / thùng / nhạc)
  • Trên trình soạn thảo văn bản dán đoạn script trên và lưu nó.
  • Chạy sudo chmod a+x /usr/local/bin/custom-title
  • Chạy gksudo gedit /usr/share/applications/rhythmbox.desktop
  • Trên tệp này, có một dòng (số dòng là 35 của tôi) cho biết:

    Exec=rhythmbox %U
    
  • Thay thế nó bằng tên của tệp đã tạo:

    Exec=custom title (fx. Exec=music)
    
  • Lưu tệp dưới dạng tùy chỉnh mới name.desktop fx. âm nhạc.desktop. Hãy cẩn thận rằng bạn không ghi đè lên tập tin gốc!

Để thay đổi có hiệu quả đối với chức năng "mở bằng"

  • Chạy gksudo gedit /usr/share/applications/rhythmbox-device.desktop
  • Thay đổi rhythmboxtên được sử dụng trong tệp .desktop trước đó.
  • Lưu các tập tin.
  • Tiêu diệt các quá trình hoạt động của nhịp điệu với màn hình hệ thống hoặc với sudo kill rhythmbox
  • Cắm điện thoại / trình phát nhạc của bạn và bấm "Mở bằng (Ứng dụng nhạc)" để xem nó có hoạt động không.

(Tóm tắt) Tổng quan về các tệp bạn nên có

Để làm cho ứng dụng có đầy đủ chức năng, bạn nên có 3 tệp .desktop /usr/share/applicationskhi hoàn tất:

  1. music.desktop hoặc tên bạn đã cho ứng dụng

    với Exec=musicHidden=true(thêm cái cuối cùng nếu không có)

  2. nhịp hộp.desktop

    với Exec=rhythmbox %UHidden=true

  3. nhịp điệu-thiết bị.desktop

    với Exec=music --select-source %UKHÔNG CÓ mục ẩn

Điều này có nghĩa là bạn luôn mở tệp cuối cùng và tiêu đề luôn luôn như vậy. Cách duy nhất là đặt lại chính nó là khi bạn làm mới phiên của mình với ALT + F2 + R.

  1. Và bạn nên có kịch bản bash trong /usr/local/binofcference.

Ghi chú cuối cùng:

  • Khi tôi đang sử dụng --name "\a\b\c"là để sửa lỗi , đừng thay thế bằng tên ứng dụng!
  • Nếu bạn không ghi chú dòng cuối cùng của tập lệnh, tập lệnh sẽ không kết thúc cho đến khi ứng dụng được đóng.
  • Giải thích về ${@:2}mã được yêu cầu bởi @Maud Kon :

    1. $@ là một mảng lưu trữ tất cả các tham số vị trí.
    2. ${@:2}có nghĩa là: Tất cả các tham số vị trí nhưng đầu tiên
    3. Hãy nói rằng tôi gọi một chương trình theo cách này:

      awesome-program foo bar baz fooz
      
      • ${@:1} sẽ là foo bar baz fooz
      • ${@:2} sẽ là bar baz fooz
      • ${@:3} sẽ là baz fooz
      • ${@:4} sẽ là fooz
      • ${@:5} trống rỗng vì không có nhiều tham số vị trí hơn.
    4. $@, ${@}${@:1}là những điều tương tự: Tất cả các thông số vị trí.

    5. Tìm hiểu thêm về chủ đề này tại đây: http://wiki.bash-hackers.org/scripting/poseparams

Tôi đã thử cả hai cách cư xử (cũng là cách ở đây) và tập lệnh bash của bạn hoạt động một phần. Nó khởi chạy một cửa sổ mới với tên mới, nhưng nếu tôi khởi chạy lại từ tổng quan, nó vẫn có mục cũ ... tôi có làm gì sai không?
Maud Kon

@MaudKon: Tổng quan là gì? Hãy thử kịch bản bây giờ. Nếu bạn gọi "Tổng quan" đến dấu gạch ngang (bảng điều khiển lớn có nhiều ứng dụng), tôi sẽ nói với bạn rằng tập lệnh của tôi không tạo ra thay đổi vĩnh viễn.
Helio

Ý tôi là tổng quan về ứng dụng, tôi đã ẩn dấu gạch ngang rồi, haha. Hmm, yeah, hơn kịch bản của bạn hoạt động. Có cách nào để thay đổi vĩnh viễn? Giống như chỉnh sửa một tập tin thực thi với fx. GHex? Hoặc thay đổi tệp thực thi trong tệp .desktop?
Maud Kon

Thử ngay bây giờ. Sử dụng tập lệnh mới và làm theo phương pháp trong phần Để thay đổi vĩnh viễn . Bây giờ tôi đã hiểu rằng bạn đang ngụy trang Ubuntu của mình ;-)
Helio

1
@Helio Tôi đã cập nhật bài viết của bạn với các bước làm việc cho tôi. Tôi cũng đã thêm quá trình để làm cho chức năng "mở với" hoạt động.
Maud Kon

2

Chỉ cần sử dụng tập tin dịch!

Tôi gặp phải thử thách rất khó khăn này với Thunar: Thật khó chịu khi Compiz Scale hiển thị tiêu đề cửa sổ Thunar là "AnyFolder - Trình quản lý tệp" và không gian bị thu hẹp với thông tin không cần thiết.

Tôi đã thử các cách được đề cập ở trên xdotoolwmctrlnhưng chúng không cố định vì Thunar thay đổi tiêu đề cửa sổ mỗi khi tôi đến một thư mục khác. Và nó cảm thấy quá đáng khi có một kịch bản ngồi xung quanh để thay đổi tiêu đề trở lại mỗi khi Thunar thay đổi nó.

Một giải pháp dễ dàng hơn là sử dụng tệp dịch đi kèm với mọi ứng dụng. Bạn chỉ cần biên dịch lại tệp nguồn dịch bằng một công cụ có tên msgfmttrong gettextgói. Tôi chỉ làm điều này cho gThumb -chỉ cho vui - và nó cũng hoạt động.

1. Nhận mã nguồn cho ứng dụng liên quan.
Nhập hoặc truy cập vào http://packages.ubfox.com , lấy nguồn và tìm thư mục có tên : nó chứa các tệp ngôn ngữ văn bản thuần túy. Hãy tìm ngôn ngữ của bạn. Giả sử bạn đến từ Brazil, tập tin đó sẽ là$ sudo apt-get source APPLICATIONpopt_BR.po

2. Thay đổi tập tin theo nhu cầu của bạn
Hãy tìm chính xác! tiêu đề cửa sổ mà bạn muốn thoát khỏi hoặc thay đổi. Trong trường hợp của Thunar, đó là "Trình quản lý tệp"pt_BR.potôi đã tìm thấy

:. set window title
: ../thunar/thunar-window.c:3154 ../Thunar.desktop.in.in.h:3
: ../thunar/thunar-settings.desktop.in.h:1
msgid "File Manager"
msgstr "Gerenciador de arquivos"

nơi msgidlà tín hiệu ứng dụng gửi và msgstrnhững gì các langpack dịch nó.
Thay đổi msgstrthành bất cứ điều gì bạn thích, tức là msgstr "o_-".
Tôi đã học được rằng nếu bạn để trống bản dịch như thế này msgstr ""thì ứng dụng sẽ rơi trở lại msgid. Nếu bạn muốn nó "trống", hãy sử dụng khoảng trắng. Hoặc một dấu chấm. Hoặc bất kỳ biểu tượng ASCII sôi nổi.

3. Nhận trình biên dịch
Như đã đề cập, bạn cần msgfmttừ gettextgói, vì vậy bạn cần nhập
$ sudo apt-get install gettext

4. Biên dịch
Mở một thiết bị đầu cuối, đi đến thư mục đã thay đổi của bạn pt_BR.povà để thông báo kiểm tra tệp bị lỗi:
$ msgfmt --check --check-accelerators=_ -o /dev/null pt_BR.po
Nếu nó ổn, hãy tiếp tục và biên dịch nó:
$ msgfmt -c -o pt_BR.mo pt_BR.po

5. Đặt tệp
Hãy xem cách dịch gốc trong / usr / share / locale / YOU_LANGUAGE / LC_MESSAGES / hoặc / usr / share / locale-langpack / Your_LANGUAGE / LC_MESSAGES / được đặt tên và đặt tệp của bạn ở đó. Nếu nó không tồn tại ở cả hai nơi, hãy đặt nó vào một trong số chúng và thử nghiệm một chút với tên tệp: chữ thường, Camelcase hoặc một cái gì đó như, tức là gthumb.mohoặc YOUR-APP.mo.
Tạo bản sao lưu của bản gốc trước: sau đó sao chép bản dịch mới của bạn ở đó
$ 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

Nếu YOU_APP đang chạy, hãy đóng tất cả các phiên bản của nó.
Kiểm tra nó!

Gợi ý Nếu bạn đang chạy Ubuntu với nội địa hóa EN như tôi, chỉ cần sử dụng bất kỳ .po *, xóa hoặc nhận xét tất cả các cặp vợ chồng msgstr / msgstr không thay đổi từ nó và đặt nó trong / usr / share / locale / vi / LC_MESSAGES / .

Nguồn:
http://wiki.xfce.org/translations/translation_guidance_in_xfce


Chỉ để cho bản ghi âm thôi; Tôi nghi ngờ bạn thực sự đã thử kịch bản, vì nó duy trì tên, như được đề cập trong câu trả lời.
Jacob Vlijm

Bạn nói đúng, tôi đã không thử tập lệnh này nhưng một tập lệnh tương tự (đơn giản hơn) từ một nơi khác và các thủ thuật với xdotool và wmctrl. Như đã đề cập, đối với tôi, nó giống như bắn chim sẻ bằng súng thần công, so với việc thay đổi một dòng trong tệp nguồn. Tuy nhiên, người ta có thể học được rất nhiều từ các kịch bản.
ronso0

Tôi tò mò chuyện gì sẽ xảy ra nếu ứng dụng được nâng cấp. Các tệp * .desktop và các tệp bản địa hóa có bị ghi đè không?
ronso0

Như đã giải thích ở đây , Askubfox.com/a/703942/72216 , tôi không chia sẻ fobia cho một kịch bản nền, nếu nó được viết tốt và không thêm chức năng quan trọng. Về .desktoptệp: một lần nữa, bạn phải nhầm lẫn câu trả lời của tôi với một câu hỏi khác mà bạn có thể đã đọc. Câu trả lời không chỉnh sửa .desktoptập tin và không cần thực hiện hành động nào khi ứng dụng được cài đặt lại.
Jacob Vlijm

Đây là một câu hỏi chung vì câu trả lời số 2 sửa đổi .desktopcác tệp và tôi làm như vậy với các tệp dịch. Bạn có biết nó không? Và tôi có thể cung cấp cho BẤT K Solution giải pháp tập lệnh nào vì bây giờ tôi đã đọc tức là "mu__Inending -" nơi tôi có "mu__Income - Trình quản lý tệp" . Đối với các ứng dụng có tiêu đề cửa sổ tĩnh mà không có bất kỳ "đường dẫn / đến / thư mục" nào, các giải pháp của tôi hoạt động tốt.
ronso0

1

Thay thế (một phần của) tiêu đề cửa sổ bằng wmctrl

câu trả lời của riêng tôi khi sử dụng tệp dịch của ứng dụng không đủ cho một số trường hợp đối với tôi, tôi đã xây dựng dựa trên giải pháp của Jacob Vlijm và sửa đổi tập lệnh của mình để thay thế các chuỗi nhất định trong tiêu đề cửa sổ. Tôi hy vọng nó ổn để gửi câu trả lời riêng biệt này. Tín dụng đến Jacob Vlijm cho ý tưởng và thiết lập kịch bản!

Ví dụ, tôi thích đọc Some fancy websitethay vì Some fancy website - Mozilla Firefox. Plugin quy mô Compiz bây giờ rõ ràng hơn nhiều vì tôi cũng loại bỏ - File managervà các chuỗi khác.

Những thay đổi tôi đã thực hiện:

  1. sử dụng //như dấu phân cách window_names.txtđể cho phép khoảng trắng
  2. sử dụng wmctrlthay vì xdotoolsửa đổi tiêu đề cửa sổ (vì xdotool không xử lý tốt các ký tự không phải ASCII):wmctrl -i -r [WindowIdentifier] -N 'new Title'
  3. một số dòng bổ sung trong tập lệnh để thực hiện thay thế chuỗi, v.v.

Việc sửa đổi window_names.txtđược cấu trúc như thế này:
[process name]//[exact text to replace]//[replacement text]

firefox// - Mozilla Firefox// (whitespace!)
thunar// - File Manager// ° xyz
gedit// - gedit// - 123

Kịch bản nổi mụn:

#!/usr/bin/env python3
import subprocess
import time
import os

f = os.environ["HOME"]+"window_names.txt"

change = []
lines = open(f).read().splitlines()
for l in lines:
    try:
        change.append(l.split("//"))
    except IndexError:
        pass

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
curr_1 = []

while True:
    try:
        curr_2 = get(["wmctrl", "-lp"]).splitlines()
        new = [w for w in curr_2 if not w in curr_1]

        for item in new:
            line = item.split(None, 4)
            winID = line[0] ; pid = line[2] ; currentTitle = line[4]
            procs = get(["ps", "-e"]).splitlines()
            match = [l for l in procs if pid in l][0]
            for app in [app for app in change if app[0] in match]:
                newTitle = str.replace(currentTitle, app[1], app[2])
                subprocess.Popen(["wmctrl", "-i", "-r", winID, "-N", newTitle])
        curr_1 = curr_2
        time.sleep(0.3)
    except:
        pass

Một lần nữa: Tín dụng đến Jacob Vlijm cho ý tưởng và thiết lập kịch bản!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.