2016-12-31 3 views
0

작업 공간의 이름은 바꾸지 만 기본적으로 작업 공간 번호를 유지하려면 i3 사용자 안내서에서 다음 스크립트를 찾으십시오.i3 구성에서 기능을 실행하는 방법은 무엇입니까?

bindsym $mod+r exec i3-input -F 'rename workspace to "%s"' -P 'New name: ' 

하지만 문제는 기본적으로 작업 공간 번호를 유지하지 않으므로 작업 공간 번호를 입력해야한다는 것입니다.

다음 명령으로 초점을 맞춘 작업 공간 번호의 번호를 얻는 방법을 찾았지만 i3 config에서 함께 입력 이름과 번호를 연결하는 방법을 모르겠습니다.

i3-msg -t get_workspaces | jq '.[] | select(.focused == true) | .num' 

그래서, I3 설정 파일에, 나는 내 목적을 달성하기 위해 사용자 입력 작업 공간 번호를 CONCAT하는 기능의 어떤 종류를 실행할 수 있는지 궁금하네요?

답변

1

나는 그렇게 생각하지 않습니다. 그러나 i3-config에서 스크립트를 작성하여 exec으로 호출하면 원하는 모든 작업을 수행 할 수 있습니다. 따라서, 예를 들어 :

~/빈/I3 - 이름 바꾸기 - 작업 공간 (어디든지 편리) :

bindsym $mod+r exec i3-rename-workspace 

에 기억 어딘가에 당신의 I3-설정에서

N=$(i3-msg -t get_workspaces | jq '.[] | select(.focused == true).num') 
i3-input -F "rename workspace to \"$N: %s\"" -P 'New name: ' 

스크립트에 대한 전체 경로를 제공하거나 i3의 $PATH 어딘가에 넣으십시오.

+0

또한 스크립트 디렉토리를 PATH 변수에 추가 할 수는 있지만'.bashrc'를 사용하지 않을 수 있습니다. https://askubuntu.com/a/920572/75083 – yPhil

0

i3 구성에서 기능을 실행할 수 있습니다. 약간 털이 나지 만 기능이 훌륭하게 작동합니다. 기억해야 할 핵심 사항은 , 또는 ;이 필요합니다 (즉, 구문의 필수 부분이므로 작성할 수있는 모든 함수). exec에 전달 된 명령 내에 동일한 유형의 추가 인용 부호가있는 경우 기억해야합니다 너는 i3 documentation에 따라 \\으로 탈출해야합니다.

개인적으로 필자는 유지 관리 및 내 i3 구성 외부로 드래그하기 위해 별도의 스크립트를 만들 필요없이 간단한 종료 메뉴를 원했습니다. 인라인 함수 정의 및 호출을 사용했습니다. 이는 git 별칭에서 외부 명령을 실행하는 데 권장되는 방법과 매우 유사합니다 (그리고 이것이 작동한다는 생각이 들었습니다).

bindsym $mod+Shift+q exec "bash -c 'f() { res=$(rofi -dmenu < <(echo -en \\"logout\nrestart\nshutdown\\")); case $res in logout) i3-msg exit;; restart) sudo shutdown -r +2;; shutdown) sudo shutdown -P +2;; esac; }; f;'"

은 압축 해제 할 약간 밀도,하지만 난 임시 기능 f() {...}; f;'를 정의하고 이후에 호출. 함수 내에서 프로세스 대체 및 입력 리디렉션을 사용하여 메뉴에 옵션을 입력하여 변수 res=$(rofi -dmenu < <(echo -en \\"logout\nrestart\nshutdown\\"))으로 선택을 캡처하고 내부 이중 따옴표를 이스케이프 처리하는 추가 \\을 확인합니다.

마지막으로 사용자가 case을 통해 선택한 옵션을 평가하고 재시작 및 종료 명령에서 2 분의 시간 제한을 사용하여 해당 옵션을 기반으로 작업을 선택 했으므로 실수로 수정자를 실수로 누르게되면 중단 할 수 있습니다 Esc을 눌러 메뉴를 종료하고 항목을 선택하는 것이 필요합니다.

이 글을 작성하고 로그 아웃하고 모든 현재 Windows/레이아웃을 쉽게 풀 수 있다는 것을 깨닫고 난 후 목록에서 처음 나타나는 "no-op"옵션을 추가하고 마지막으로 평가됩니다 case 성명은 아마도 echo something funny via cowsay 또는 notify-send입니다.