리눅스에서 커스텀 shortcut 만들기 - sxhkd
리눅스에서 shortcut을 만들려면?
리눅스가 윈도우보다 편리한 점을 꼽자면, 개인적으론 모든 것을 shortcut으로 만들 수 있단 점을 1번으로 꼽을 것이다.
윈도우에서는 시작 버튼을 누르고 프로그램 목록에서 앱을 선택해주거나, 시작줄에 shorcut 아이콘을 만들어두고 이걸 클릭해서 실행하는 방법을 쓴다. 키보드 shortcut을 만들고 싶지만, 윈도우는 그런 커스터마이징 기능을 자체적으로 제공하지 않는다.
그렇지만 리눅스는 이런 부분의 커스터마이징이 굉장히 자유롭다.
GNOME이나 KDE 같은 desktop environment의 경우 shortcut을 만드는 기능을 자체적으로 제공한다.
그래서 이 기능을 사용하면 원하는 shortcut을 만들 수 있다.
desktop environment가 아니라 window manager도 shortcut 생성 기능을 제공한다.
i3와 dwm은 자체 configuration 파일에 shortcut을 추가해줄 수 있다.
음… 그런데 뭔가 이상하다. 이렇게 대부분의 리눅스 시스템이 shortcut 생성 기능을 제공한다면, sxhkd가 왜 필요할까?
나는 개인적으로 다음과 같은 이유로 sxhkd가 필요하다고 본다.
- 여러 desktop environment, window manager를 바꿔가면서 사용하는 사용자는 각 환경에 맞는 shortcut 생성 기능을 매번 새로 익혀야 한다.
- dwm과 같은 컴파일 기반 window manager는 shortcut을 추가할 때마다 새로 컴파일하고 재시작 해줘야하기 때문에 매우 번거롭다.
그래서 어느 환경에서 리눅스를 사용하더라도, 통일된 하나의 방식으로 shortcut을 생성하고 관리할 수 있으면 편리할 것이다.
이를 위한 패키지가 sxhkd이다.
그럼, sxhkd에 대해서 하나씩 알아보자.
sxhkd에 대한 간략한 설명
sxhkd is an X daemon that reacts to input events by executing commands. Its configuration file is a series of bindings that define the associations between the input events and the commands.
위 설명은 sxhkd에 대한 간략한 소개이다. 이를보면 sxhkd는 input event와 그에 해당하는 command를 한 쌍으로하여 config에 설정해두고, input event가 발생하면 거기에 해당하는 command를 실행하는 X daemon이라고 한다.
좀 특이한 점은, sxhkd는 실제 다른 데몬들처럼 systemctl로 관리되진 않는단 점이다.
그래서 개인이 사용하는 환경에 맞는 방식으로 sxhkd &를 autostart 하도록 설정하여, 실제 데몬으로 동작하게 만들어줘야 한다.
(자세한 설명은 설정에서 설명하겠다.)
sxhkd 설치 및 설정
sxhkd 설치하기
늘 하던대로 다음처럼 sxhkd를 설치한다.
sudo pacman -S sxhkdsxhkd 자동시작 설정하기
다음으로 sxhkd를 데몬으로 자동시작(autostart)되도록 설정해줘야한다. autostart로 설정하는 방식은 사용하는 desktop environment나 window manager마다 다르니, arch wiki의 autostarting 가이드를 참고하자.
dwm을 사용하는 나의 경우, dwm에 autostart 패치를 적용하고 다음처럼 autostart 쉘 스크립트를 작성하여 autostart되도록 하였다.
#!/bin/sh
xrandr --output HDMI-0 --mode 1920x1200 --output DP-2 --mode 1920x1200 --rotate left --right-of HDMI-0
ibus-daemon -rxd
feh --bg-fill "/home/will/.wallpapers/cliff.jpeg"
picom -b
slstatus &
# sxhkd autostart 추가
sxhkd & sxhkd에 shortcut 추가하기
자, 이제 부팅과 함께 자동으로 sxhkd &가 실행되는 환경까지 설정했다.
다음으로, 이 sxhkd가 사용하는 config 파일에 원하는 shortcut들을 추가해주면 된다.
sxhkd가 참고하는 config의 경로는 ~/.config/sxhkd/sxhkdrc이다.
나는 다음과 같은 설정을 사용하고 있다. 이를 참고하여 원하는 단축키를 추가해주자.
# rofi drun
super + shift + p
rofi -show drun
# lock screen
super + mod1 + p
i3lock --nofork --image /home/will/.wallpapers/patagonia_lock.png
# run terminal
super + Return
kitty
# run obsidian
super + o
obsidian
# run lf
super + e
kitty -e yazi
# run file manager
super + shift + e
gtk-launch pcmanfm
# run zotero
super + z
gtk-launch zotero
#
# run browser
super + x
brave
# take screenshot
super + shift + s
flameshot gui
XF86AudioLowerVolume
pactl set-sink-volume @DEFAULT_SINK@ -2% && ~/.local/bin/dun-volume
XF86AudioRaiseVolume
pactl set-sink-volume @DEFAULT_SINK@ +2% && ~/.local/bin/dun-volume
XF86AudioMute
pactl set-sink-mute @DEFAULT_SINK@ toggle && ~/.local/bin/dun-volumeconfig 반영하기
config 파일을 수정했다면, sxhkd가 다시 config을 읽도록 해야 한다. 따로 config만 다시 읽어오는 명령어는 없는 것 같으니, sxhkd를 종료하고 다시 실행하여 새로운 config을 읽어오게 해야한다.
다음의 명령어로 sxhkd를 종료하고 재시작한다.
killall sxhkd
sxhkd & disown # disown까지 해줘야 터미널이 종료되도 함께 꺼지지 않고 데몬으로 동작하게 된다.마무리하며
오늘 포스팅에서는 어떤 desktop environment나 window manager에서도 동작할 수 있는 shortcut 설정이 가능한 sxhkd를 설치하고 설정해봤다. 유용하게 쓰시길…