시작 시 자동 실행 후 프로그램 GUI 숨기기

시작 시 자동 실행 후 프로그램 GUI 숨기기

다음과 같은 고통을 겪은 후Redshift의 버그, 훌륭한 대체품을 찾았습니다.아이리스.

Iris폴더를 내 디렉토리에 넣고 homeStartup Application 에 다음 명령을 추가했습니다 sh /home/arun/Iris/Iris.sh.

모든 것이 훌륭하게 작동하지만 시작 시 설정 GUI 창도 시작됩니다. 정말 필요한 것은 작은 패널 표시기 아이콘뿐입니다. OS X의 "로그인 항목"에 있는 "숨기기" 기능과 비슷합니다.

이것이 달성될 수 있습니까?

답변1

아이리스 설정창

로 아이리스의 설정창을 닫으면 X,겉으로는닫은.

그러나 wmctrl( ) 의 도움으로 똑같이 하면 ,wmctrl -ic <window_id>창문닫혔지만 신청이 완료되었습니다.

내 결론은 그 창문이 실제로는 아니라는 것이다.닫은, 하지만매핑되지 않은를 누르면 X.

우리는 의 도움으로 동일한 작업을 수행할 수 있습니다 xdotool. 이 답변의 편집된 버전을 사용하면 다음과 같습니다.시작 시 프로그램을 최소화하여 실행하려면 어떻게 해야 합니까?Iris, 그러면 설정 창이 나타나지 않고 시작할 수 있습니다 .

아이리스 시작하기없이설정 창(스크립트)

  1. 스크립트는 wmctrl및 다음을 모두 사용합니다 xdotool.

    sudo apt-get install wmctrl xdotool
    
  2. 아래 스크립트를 빈 파일에 복사하고 다음 위치에 저장하세요.Iris.sh파일 과 동일한 디렉토리(그래서 그들은 같은 디렉토리에 함께 있습니다), start_iris.py.

    #!/usr/bin/env python3
    import subprocess
    import time
    import sys
    import os
    
    command = os.path.dirname(sys.argv[0])+"/Iris.sh"
    subprocess.Popen(["/bin/bash", "-c", command])
    
    def get(cmd):
        return subprocess.check_output(cmd).decode("utf-8").strip()
    
    t = 0
    
    while t < 12:
        time.sleep(1)
        try:
            w_list = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if "Iris" in l]
            for w in w_list:
                check = [l for l in get(["xprop", "-id", w]).splitlines()\
                         if "WM_CLASS(STRING)" in l][0]
                if "Iris" in check:
                    subprocess.Popen(["xdotool", "windowunmap", w])
                    break
            break
        except (IndexError, subprocess.CalledProcessError):
            pass
        t += 1
    
  3. 이제 원래 명령 대신 다음 명령을 실행하여 시작하십시오 Iris.

    python3 /path/to/start_iris.py
    

설정창이 더 이상 나타나지 않습니다!

설명

  • 스크립트는 다음을 살펴봅니다.그 자체의파일의 디렉토리를 선택 Iris.sh하고 실행합니다.
  • WM_CLASS Iris그 후, (설정 창) 의 새 창 생성을 감시합니다 .
  • 타겟 창을 찾았다면,매핑 해제다음 명령이 있는 창 xdotool:

    xdotool windowunmap <window_id>
    

노트

  1. 분명히 설정 창의 을 클릭하면 X창 매핑이 해제됩니다.
    분명히 이것은 와는 다른 방식으로 수행됩니다 xdotool. 결과적으로 를 다시 시작하지 않으면 표시기 메뉴에서 설정 창에 접근할 수 없습니다 Iris.

    그러나 일반적으로 설정 창이 필요하지 않다고 언급하셨습니다.조금도.

  2. 시작 응용 프로그램에서 GUI 응용 프로그램을 시작할 때(특히 화면 설정과 관련된 경우) 제대로 작동하려면 잠시 휴식을 취해야 할 수도 있습니다. 시작 응용 프로그램에서 작동하지 않으면 Stratup 응용 프로그램에 추가하는 명령을 다음과 같이 변경합니다.

    /bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"
    

관련 정보