비활성 상태에서 창을 불투명하게 유지하는 방법은 무엇입니까?

비활성 상태에서 창을 불투명하게 유지하는 방법은 무엇입니까?

마우스 포커스가 없을 때 모든 창이 반투명해지도록 Xfce를 설정했습니다. 비활성 상태에서 특정 창이 불투명하게 유지되도록 설정하는 방법은 무엇입니까? Xfce에는 (내가 아는 한) 특정 창 설정을 변경할 수 있는 옵션이 없습니다.

이전에 이 문제에 대한 해결책을 찾았지만 지금은 찾을 수 없습니다. 나는 명령줄 프로그램을 사용하여 원하는 창에 특정 창 관리자 프롬프트를 설정했는데, 이는 창이 투명해지는 것을 방지합니다. 그런데 제가 사용한 프로그램 이름이나 창 관리자 프롬프트가 기억나지 않습니다. 프롬프트 이름의 일부가 LOCKED.

예를 들어, 이는 마우스 초점이 상실되었을 때 김프 창이 투명해지는 것을 방지하는 데 유용합니다.

가지고 있지만 transset-df비활성 상태에서 창이 동일한 투명도를 유지하도록 강제하는 방법은 없습니다.

답변1

사용악마의 스파이 2선택적 응용 프로그램의 경우 창 유형을 "유틸리티"로 설정합니다. 이 창 유형은 Xfce 환경의 "비활성 창 불투명도"에 영향을 받지 않습니다.

초기 설정

저장소에서 Devilspie2를 설치합니다(다음 위치에서 사용 가능).더반그리고우분투$HOME/.config/devilspie2저장소)를 선택한 후 다음 내용으로 새 구성 파일을 만듭니다.

debug_print("Window Name: " .. get_window_name());
debug_print("Application name: " .. get_application_name());

if (get_application_name()=="xfce4-dict") then
   set_window_type "_NET_WM_WINDOW_TYPE_UTILITY";
end

파일 이름은 무엇이든 가능하지만 Devilspie2와 함께 사용할 수 있는 파일 확장자를 opaque.lua가져야 합니다 ..lua

예비 테스트

Devilspie2를 디버그 모드로 실행하면 다음과 같은 내용을 볼 수 있습니다.

$  devilspie2 -d
Running devilspie2 in debug mode.

Using scripts from folder: /home/USERNAME/.config/devilspie2
------------
List of LUA files handling "window_open" events in folder:
/home/USERNAME/.config/devilspie2/opaque.lua
List of LUA files handling "window_close" events in folder:
------------
Window Name: Desktop
Application name: xfdesktop
Window Name: xfce4-panel
Application name: xfce4-panel
Window Name: Application Finder
Application name: xfrun4
Window Name: Dictionary
Application name: xfce4-dict

다음 스크린샷은 Devilspie2 실행 전후의 사전 비활성 창을 보여줍니다. 사전(아래)의 불투명도는 변경되지만 두 창이 모두 비활성화되면 Xfce 터미널은 불투명(왼쪽)으로 유지됩니다.

Devilspie2가 없으면 사전이 덜 불투명해집니다.

Devilspie2를 사용하여 사전을 완전히 불투명하게 만들기

Devilspie2가 프로필을 기준으로 창 유형을 "유틸리티"로 변경했기 때문에 사전의 비활성 창은 완전히 불투명한 상태로 유지됩니다.

설정 수정

debug_print생성된 구성 파일에는 "창 이름: ...애플리케이션 이름: ..."을 표시하는 디버그 메시지로 시작하는 처음 두 줄이 포함되어 있습니다. 이 줄을 사용하면 Devilspie2가 현재 실행 중인 응용 프로그램과 후속 실행 응용 프로그램의 각 이름을 표시할 수 있습니다.

디버그 메시지에 따라 사용자는 다음 단계를 수행해야 합니다.

  1. 비활성 상태일 때 완전히 불투명해야 하는 선택한 애플리케이션을 결정합니다. 해당 행을 찾아 Application name:값을 복사합니다.

  2. /home/USERNAME/.config/devilspie2/opaque.lua텍스트 편집기를 사용하여 동일한 구성 파일을 열고 xfce4-dict선택한 애플리케이션으로 바꾸십시오.

  3. 문서를 저장합니다.

  4. 종료하고 Devilspie2를 다시 실행하세요.

USERNAME은 현재 사용자 이름을 나타냅니다.

이제 수정된 구성이 적용됩니다. 선택한 응용 프로그램이 이미 실행 중인 경우 창을 앞뒤로 전환하면 창이 다시 비활성화될 때 적용되는 변경 사항을 확인할 수 있습니다.

영구 설정:Devilspie2가 세션별로 작동하려면 이 솔루션이 백그라운드에서 실행되고 있어야 합니다. 이를 지속적으로 만들려면 devilspie2"세션 및 시작"의 "응용 프로그램 자동 시작" 탭 아래에 추가하세요.

어떤 창 유형

원래 Devilspie2를 플레이하면서 시행착오를 거쳐 이 솔루션을 찾았습니다. 나중에 김프 2.8을 실행해 보니 기본 창은 비활성 상태일 때 덜 불투명해졌지만 다른 두 개의 부동 창은 완전히 불투명한 상태로 유지되었습니다.

그런 다음 를 실행하여 창 유형을 확인한 xwininfo다음 부동 창 중 하나를 클릭하면 창 관리자 프롬프트가 인쇄됩니다.

$ xwininfo -wm

xwininfo: Please select the window about which you
          would like information by clicking the
          mouse in that window.

xwininfo: Window id: 0x2a00686 "Layers - Brushes"

  Window manager hints:
      Client accepts input or input focus: Yes
      Initial state is Normal State
      Displayed on desktop 1
      Window type:
          Utility
      Window state:
          Skip Pager
          Skip Taskbar
      Process id: 5262 on host XXXXX
      Frame extents: 1, 1, 22, 4

빙고, 창 유형은 과연 "유틸리티"입니다!

사소한 질문: "유틸리티" 창 유형은 응용 프로그램 창이 더 이상 작업 표시줄에 표시되지 않는다는 점에서 동작이 다릅니다. 사용자는 작업 표시줄 대신 Alt+ 키를 사용하여 계속 탐색할 수 있습니다 .Tab

이 동작은 유틸리티 창 유형에서 일반적이며 부동 창(예: 김프의 도킹)에서도 동일하게 관찰될 수 있습니다.

사용자가 이 동작이 바람직하지 않다고 생각하면 창 유형을 변경하는 것이 잘못된 해결책일 수 있습니다. 반면에 이 동작은 비활성 상태에서 선택적 창을 불투명하게 유지하는 기능과 함께 사소한 문제입니다.

Devilspie2 v0.31을 사용하여 Xubuntu 14.04(Xfce 4.10)에서 테스트되었습니다.

답변2

Clearkimura의 답변을 조사하던 중 이전에 창을 불투명하게 유지하기 위해 사용했던 방법을 발견했습니다. 터미널에 다음 명령을 입력하고 원하는 창을 클릭합니다.

xprop -f _NET_WM_WINDOW_OPACITY_LOCKED 32c -set _NET_WM_WINDOW_OPACITY_LOCKED 1

이는 창이 활성화될 때 Xfce가 창 불투명도를 유지하도록 하는 창 속성을 설정합니다.

나는 Clearkimura가 제안한 대로 했으나, 비활성 상태일 때 창을 자동으로 불투명하게 유지하는 또 다른 방법이 있습니다.

내 저장소에는 Devilspie2가 아닌 Devilspie만 있습니다. 저는 이 Devilspie 구성 파일을 생성하고 이름을 지정했습니다 ~/.devilspie/rules.ds(설명은 세미콜론으로 시작함).

(begin
    ;(debug)
    (if
        ; For mplayer/smplayer and all Gimp windows:
        (or
            (contains (application_name) "MPlayer")
            (contains (window_class) "Gimp")
        )
        ; comment out one of the lines below:
        (print (window_xid) "\n") ; print the window IDs
        ; (wintype "utility") ; set the window type to utility
    )
)

그런 다음 이 스크립트를 만들고 이름을 로 지정 devilspie_xprop하고 홈 디렉터리에 배치했습니다.

#!/bin/bash
devilspie $@ | while read id text; do
    if [[ $id -gt 0 && $text == "" ]]; then
        xprop -id $id -f _NET_WM_WINDOW_OPACITY_LOCKED 32c -set _NET_WM_WINDOW_OPACITY_LOCKED 1
    else
        echo "$id $text"
    fi
done

Devilspie는 Gimp 또는 MPlayer/SMPlayer 창의 창 ID를 인쇄합니다. 그런 다음 스크립트는 xprop각 창 ID에 대해 실행되어 _NET_WM_WINDOW_OPACITY_LOCKED속성을 설정합니다.

마지막으로 Xfce를 시작하기 전에 이것을 .xinitrc에 추가했습니다:

$HOME/devilspie_xprop &

나는 궁극적으로 Clearkimura의 솔루션을 선호하기로 결정했지만 둘 중 하나가 작동할 것입니다.

관련 정보