다음과 같은 고통을 겪은 후Redshift의 버그, 훌륭한 대체품을 찾았습니다.아이리스.
Iris
폴더를 내 디렉토리에 넣고 home
Startup Application 에 다음 명령을 추가했습니다 sh /home/arun/Iris/Iris.sh
.
모든 것이 훌륭하게 작동하지만 시작 시 설정 GUI 창도 시작됩니다. 정말 필요한 것은 작은 패널 표시기 아이콘뿐입니다. OS X의 "로그인 항목"에 있는 "숨기기" 기능과 비슷합니다.
이것이 달성될 수 있습니까?
답변1
아이리스 설정창
로 아이리스의 설정창을 닫으면 X
,겉으로는닫은.
그러나 wmctrl
( ) 의 도움으로 똑같이 하면 ,wmctrl -ic <window_id>
창문닫혔지만 신청이 완료되었습니다.
내 결론은 그 창문이 실제로는 아니라는 것이다.닫은, 하지만매핑되지 않은를 누르면 X
.
우리는 의 도움으로 동일한 작업을 수행할 수 있습니다 xdotool
. 이 답변의 편집된 버전을 사용하면 다음과 같습니다.시작 시 프로그램을 최소화하여 실행하려면 어떻게 해야 합니까?Iris
, 그러면 설정 창이 나타나지 않고 시작할 수 있습니다 .
아이리스 시작하기없이설정 창(스크립트)
스크립트는
wmctrl
및 다음을 모두 사용합니다xdotool
.sudo apt-get install wmctrl xdotool
아래 스크립트를 빈 파일에 복사하고 다음 위치에 저장하세요.
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
이제 원래 명령 대신 다음 명령을 실행하여 시작하십시오
Iris
.python3 /path/to/start_iris.py
설정창이 더 이상 나타나지 않습니다!
설명
- 스크립트는 다음을 살펴봅니다.그 자체의파일의 디렉토리를 선택
Iris.sh
하고 실행합니다. WM_CLASS
Iris
그 후, (설정 창) 의 새 창 생성을 감시합니다 .타겟 창을 찾았다면,매핑 해제다음 명령이 있는 창
xdotool
:xdotool windowunmap <window_id>
노트
분명히 설정 창의 을 클릭하면
X
창 매핑이 해제됩니다.
분명히 이것은 와는 다른 방식으로 수행됩니다xdotool
. 결과적으로 를 다시 시작하지 않으면 표시기 메뉴에서 설정 창에 접근할 수 없습니다Iris
.그러나 일반적으로 설정 창이 필요하지 않다고 언급하셨습니다.조금도.
시작 응용 프로그램에서 GUI 응용 프로그램을 시작할 때(특히 화면 설정과 관련된 경우) 제대로 작동하려면 잠시 휴식을 취해야 할 수도 있습니다. 시작 응용 프로그램에서 작동하지 않으면 Stratup 응용 프로그램에 추가하는 명령을 다음과 같이 변경합니다.
/bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"