sway에서 미디어키가 없는 키보드를 사용해보니 불편해서 만들어봤습니다.
커널패닉

Lv.1 커널패닉 (119.♡.59.225)

2025년 5월 9일 AM 02:12 · 수정됨(12:26)

조회 592 공감 0

현재 사용중인 키보드에 XF86 키(기능키) 가 존재하지 않아 아래와 같은 키조합을 사용할 수 없었습니다.

[code=bash]# Special keys to adjust volume via PulseAudio

bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle

bindsym --locked Ctrl+XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -1%

bindsym --locked Ctrl+XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +1%

bindsym --locked Shift+XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -2%

bindsym --locked Shift+XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +2%

bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%

bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%

# Special keys to control media track

bindsym XF86AudioPlay exec playerctl play-pause

bindsym XF86AudioNext exec playerctl next

bindsym XF86AudioPrev exec playerctl previous[/code]


하지만 매번 `pavucontrol`를 통해 볼륨조절하기 귀찮아서 고민하다 키보드의 Menu 키를 조금 응용해 봤습니다.

[code=bash]bindsym Menu exec ~/.config/sway/src/backend "media_controller"

bindsym Shift+Menu exec ~/.config/sway/src/backend "sinks_controller"[/code]

`backend` 스크립트를 잠깐 설명해보자면 특정 키조합이 발동되면 상황에 따라 각기 다른 역활을 합니다. 

[code=bash]function logout() # 로그아웃 키(Meta+Shift+E) 와 동일

function power() # 전원버튼 클릭시 재부팅, 절전모드, 시스템 종료 선택창 표시

function change_wallpaper() # 바탕화면 이미지 변경

function lock_session() # 화면잠금(Meta+Ctrl+Q) 처리 (change_wallpaper 함수와 함께 작동)

function enter_sleep() # 절전모드 처리

function current_sink_status() # 현재 출력장치 정보 확인

function current_playing_media() # 현재 미디어 재생정보 확인

function media_controller() # 미디어키 처리함수

function sinks_controller() # 출력장치 변경함수 [/code]


그 중 위에서 언급한 `media_controller`와 `sinks_controller` 를 설명해 보자면 Sinks 의 갯수와 Input(미디어를 재생하는 프로그램 갯수) 에 따라 출력 소스 변경, 볼륨 제어 등을 수행합니다. 그리고 `media_controller` 는 여러개의 미디어가 재생 중일 경우 `rofi` 를 사용해서 변경할 앱의 미디어를 제어합니다.


마지막으로 `change_sink` 는 지면상 역할만 간단하게 설명하겠습니다.

[code=bash]function default() # 기본 출력소스 변경함수

function per_source() # 앱별 출력소스 변경함수

function change_sink_volumes() # 출력장치 볼륨 설정

function sink_mute_toggles() # 출력장치 음소거 토글

function check_current_state() # 출력장치 및 재생중인 앱 확인함수[/code]


만약 전체 내용이 궁금하시다면 첨부파일을 참조해 주세요. (압축파일 내용은 아래와 같습니다.)

[code=bash]# 리비전: e3b7141

[hm:~/.config/sway/src]$ tar -zcf sway_source.tgz * (master)

[hm:~/.config/sway/src]$ tar -ztf sway_source.tgz (master✱)

backend

change_sink[/code]


다음에 기회가 되면 swaybar에 날씨정보를 표시하는 스크립트(weather) 를 소개해 볼까 합니다.


추신) 글이 너무 길면 클라우드플레어 오류가 발생하네요. https://damoang.net/bug/6043

댓글 (3)

  • 신사아님당

    신사아님당 Lv.1

    25.05.09 · 125.♡.243.26

    코드들 어떻게 적으면 이렇게 보기 좋게 나오나요? 줄간 배경도 다르게 나오고 줄번호도 나오고... 좋네요~ {emo:onion-012.gif:50}
    +
    waybar는 일단 깔아 놓으면 기본 기능들이 다 작동을 하니까, 그래서 전 waybar를 깔았는데요. 저번에 커널패닉님께서 올려주신 스샷 보고 좀 혹했습니다. swaybar... 깔끔하더라구요. ㅎㅎ
  • 커널패닉

    커널패닉 Lv.1 → 신사아님당 작성자

    25.05.09 · 119.♡.59.225

    swaybar는 뭔가 작성할 게 많지만 한번 구성해 놓으면 만족도가 높더라구요. 다만 swaybar 전용 쉘 스크립트를 만들지 않고 sway config 파일에다 작성하니 코드가 점점 난해해지고 있습니다. 조만간에 한번 정리해 봐야겠네요.

    코드는 버튼을 이용해서 작성하고 있습니다.
    [code=bash]echo 'Hello World!'[/code]
  • 신사아님당

    신사아님당 Lv.1 → 커널패닉

    25.05.09 · 125.♡.243.26

    [code=hs]우앗! 감사합니다!! d+_+b[/code]

댓글을 작성하려면 이 필요합니다.