18.04(gnome) 작업 공간 - 작업 공간을 조작(예: 임의로 재정렬)하는 방법은 무엇입니까?

18.04(gnome) 작업 공간 - 작업 공간을 조작(예: 임의로 재정렬)하는 방법은 무엇입니까?

Gnome 작업 공간은 사용하기 매우 편리하지만 관리하기가 매우 어렵습니다. 예를 들어:

  • 작업 공간의 마지막 창을 닫으면 해당 작업 공간이 닫힙니다(즉시가 아니면 곧).
  • 새 창은 하단에 항상 존재하는 빈 작업 공간에만 삽입할 수 있습니다.
  • 작업 공간을 이동하려면 각 창을 개별적으로 이동해야 하며, 해당 프로세스 중에 작업 공간이 비어 있으면 작업 공간이 닫힙니다.

존재하지만 찾을 수 없는 기능은 다음과 같습니다.

  • 작업 공간 자동 닫기를 억제하는 기능(아마도 close-(empty)-workspace 명령으로 대체)
  • 작업 공간을 회전하는 기능(빈 작업 공간을 어디에나 배치할 수 있음)
  • 작업 공간을 낮은 이웃과 교환하는 기능

어쩌면 나는 일반적으로 알려진 사실에 대해 무지한 것일 수도 있습니다. 또는 Gnome이 이러한 동작을 프로그래밍하기 위한 API를 제공할 수도 있습니다. 아니면 불가능할 수도 있습니다.

알려주세요.


부록: 이 질문에 대한 답을 선택한 지 며칠 후, 명시된 목표를 달성하는 데 비교적 쉬운 API를 찾았습니다. 해당 정보가 제공됩니다아래에새로운 답변으로.

답변1

참고: 내 질문에 답하기-Gnome 상태를 정확하게 반영하기 때문에 허용된 답변을 남겨 둡니다.


프로젝트가 있습니다xdotoolUbuntu 18.04 관리 패키지로 편리하게 제공됩니다. 데스크톱, 창 및 해당 관계에 대한 읽기 및 쓰기 액세스를 제공합니다. (그 외 제가 사용하지 않은 기능도 많습니다.)

이 패키지를 사용하면 원하는 기능을 간단하게 코딩할 수 있습니다. Direct CLI는 유용하지 않지만 이를 Ubuntu 사용자 정의 바로가기에 연결하면 예를 들어 Gnomes 표준 조감도로 모든 데스크탑을 보면서 키를 사용하여 개별 데스크탑을 위아래로 이동하고 선택을 이동할 수 있었습니다.

Gnome 표준 조감도는 "Super+a, Super+a"를 통해 사용할 수 있으며 마우스를 화면 오른쪽으로 이동하면 모든 데스크탑이 수직 배열로 나타납니다.

Gnome과의 간섭을 피하기 위해서는 Gnome의 기능을 꺼야 했습니다.동적 데스크탑그리고정적 데스크탑대신 설정하세요. 사용정적 데스크탑선택한 답변에서 제안되었습니다.

나의완전한 코드는 요점으로 제공됩니다.

예를 들어, 다음 코드 발췌는 데스크탑 교체를 위한 것입니다.

swaprelative(){
    nbr=$1
    ndt=$(xdotool get_num_desktops)
    if [[ $ndt -lt 2 ]] ; then return 0 ; fi
    adt=$(xdotool get_desktop)
    bdt=$((( adt + ndt + nbr) % ndt ))
    if [[ $bdt == $adt ]] ; then return 0; fi
    if [[ $bdt -lt 0 ]] ; then
        echo "relative neighbor value $nbr is out of bounds"
        return 1;
    fi
    xdotool search '.*' | while read w ; do
        if ! window_has_desktop $w ; then continue; fi
        wdt=$(xdotool get_desktop_for_window $w)
        if [[ $wdt -eq $adt ]] ; then
            xdotool set_desktop_for_window $w $bdt
        elif [[ $wdt -eq $bdt ]] ; then
            xdotool set_desktop_for_window $w $adt
        fi
    done
    xdotool set_desktop $bdt
}

이렇게 간단하게 코딩을 할 수 있었던 것은 프로젝트의 힘 때문이라는 점을 강조하고 싶습니다 xdotool. 해당 프로젝트는 다음에 의존하지 않습니다.금언, 오히려 병렬로 작동합니다.금언같은 것에 액세스엑스기초 요소. WM과 xdotool 간의 상호 간섭을 피하기 위해 주의를 기울이면(예: Gnome에서 동적 데스크탑 끄기) 다양한 창 관리자에서 사용할 수 있습니다.

답변2

그놈 셸에서는 기본적으로 포함된 응용 프로그램이 있는 전체 작업 공간을 이동할 수 없습니다. 이것이 강력한 기능이기는 하지만, 이 기능을 갖춘 Linux 데스크탑 환경은 모르겠습니다.

API와 관련하여 GNOME Shell에는 확장 메커니즘이 있습니다. 이것은 실제로 전혀 API가 아닙니다. 이는 본질적으로 개발자가 자신의 자바스크립트 코드를 삽입하여 셸의 동작을 변경할 수 있는 시스템의 "(잠재적인 보안) 허점"입니다. 존재하는 수많은 그놈 쉘 확장은 많은 경우에 큰 성공을 거두며 수행할 수 있는 작업을 보여줍니다.

기대하는 기능과 관련하여 상황은 다음과 같습니다.

작업 공간 자동 닫기를 억제하는 기능(아마도 close-(empty)-workspace 명령으로 대체)
기본적으로 GNOME Shell에는 동적 작업 공간이 제공됩니다. 그러나 이 기능을 끌 수 있으며 고정된 작업 공간 수를 설정할 수 있습니다. 이를 달성하려면 (GNOME) Tweaks를 설치하고 "작업 공간" 탭에서 "정적 작업 공간"을 선택하십시오.여기에 설명된 대로.

작업 공간을 회전하는 기능(빈 작업 공간을 어디에나 배치할 수 있음)
안타깝게도 작업 영역(및 해당 콘텐츠)의 순서를 변경할 수는 없습니다. 애플리케이션을 이동할 수만 있습니다. 물론 정적 작업 공간에서는 빈 작업 공간이 비어 있습니다.

작업 공간을 낮은 이웃과 교환하는 기능
이것이 무엇을 의미하는지에 따라 다릅니다. 작업 공간의 순서를 다시 변경하려는 경우 위의 사항을 참조하세요. 작업 공간을 빠르게 전환하려는 경우 단축키 Ctrl+ Alt+ Up/ Down또는 Super+ PgDn/ 를 사용하면 쉽게 전환할 수 있습니다 PgUp.

정적 작업 공간으로 전환하면 전체 작업 공간을 이동할 수 없다는 제한 사항을 제외하고 무엇이 어디에 있는지 더 잘 제어할 수 있습니다.

정적 작업 공간을 사용하여 작업 흐름을 향상시키는 몇 가지 팁

  • 당신은 설치할 수 있습니다작업 공간 표시기현재 작업 공간에 대한 표시를 제공하는 그놈 쉘 확장입니다. 확장 기능을 사용하면 원하는 경우 작업 공간의 이름을 바꿀 수 있습니다(예: "1"이 아닌 "1 - 탐색").

  • 특정 작업 공간으로 빠르게 전환하거나 애플리케이션을 이동하도록 단축키를 구성할 수 있습니다. 예를 들면 다음과 같습니다.

    gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-4 "['<Super>4']"
    gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-4 "['<Super><Shift>4']"
    

Super이 명령은 WS 4로 즉시 이동하는 단축키 + 4와 애플리케이션을 WS 4로 이동하는 단축키 Super+ Shift+를 설정합니다 4(타일링 창 관리자 i3에서 작동하는 것과 유사).

답변3

작업 공간을 낮은 이웃과 교환하는 기능

Gnome 3.38과 호환되는 작업 공간을 재정렬할 수 있는 확장 기능이 있습니다:Reorder Workspaces

https://extensions.gnome.org/extension/3685/reorder-workspaces/

바로가기는 작업공간 개요에서만 작동합니다. 창 보기에서 가능하도록 문제를 열었습니다.https://github.com/jeremiahmegel/gnome-reorder-workspaces/issues/5

관련 정보