BIBLIOGRAPHY
Related Notes
History
- 잠시만. 이건 있어야 돼. 핵심 시나리오니까
Sway (2022-W24)
- 아직 멀었다. 그냥 X11을 사용하라.
- 이때는 구동도 못하던 때다. 지금은 활용 가능하지만 그렇다고 속도면에서 조건 좋은 것만 아님. 활용 때문에 당장 못씀.
- i3 와 무엇이 다른가?
- i3WM 은?
- i3 는 X 윈도 시스템용 타일링 창 관리자로, C 로 작성했다. 타일링, 스태킹, 탭 배치를 지원하며 이를 동적으로 관리한다. 설정은 순수 텍스트 파일에서 하며 그 기능은 유닉스 도메인 소켓과 많은 프로그래밍 언어의 JSON 기반 IPC 를 사용해 확장할 수 있다. 위키백과
- i3 와 다른 점
- i3 를 대체하고 환경 설정을 호환하는 것을 목표로 하지만, 키 바인딩은 일부 다르고, i3Gap 을 포함하고 있다. 내가 느낀 바, i3 의 사용성은 그대로 가져오면서 Wayland 컴포지터로 개발한 프로젝트라고 볼 수 있다.
- i3WM 은?
- 그렇다면, i3 가 지향하는 Tiling WM 은 무엇이며 어떤 장점이 있기에 사용자들이 있는가? 무엇을 기대할 수 있는가? — 이 부분이 내가 주목하는 점이다.
i3wm regolith keybindings
Super-Shift-/
가장 중요함. 키바인딩 뷰
Scratchpad and Floating Toggle
방금 전 관련 유튜브 보다가 따라 하기로 함. Regolith 에서 바인딩이 좋지는 않지만 그대로 쓰기로 함.
Emacs 창을 하나 더 띄워서 Scratchpad 로 보낸다. 여기서는 단일 용도의 창을 계속 띄워 놓기로 한다. 예를 들어 어젠다도 좋겠다. 그리고 토글 하면 된다.
- Super-Ctrl-m : Move to scratchpad
- Super-Ctrl-a : Navigate Scratchpad Toggle
이건 창을 플로우팅해서 활용하는 방법. 위에 것 보다는 쓸모가 없을 듯.
- Super-Shift-f : Window Floating Toggle
- Super-Shift-t : Tile/Float Focus Toggle
Super-.
Last Focused Window
이걸 잘 써야 창 사이에 편하게 이동한다. 어짜피 현재 워크스페이스 안에서 이동하는 것임.
|2025-04-07 Mon 11:16|
@user sway 버전으로 스크립스를 만들어줘
@assistant 어떤 스크립트를 원하시나요? 구체적인 요구 사항을 알려주시면, 해당 내용에 맞는 Sway 설정 스크립트를 작성해 드릴 수 있습니다. 예를 들어, 창 관리, 단축키 설정, 시작 프로그램 등 어떤 기능이 필요한지 알려주세요.
@user
sway 버전으로 스크립스를 만들어줘
Replaced `i3-msg` with `swaymsg` to make the script compatible with Sway window manager. The functionality remains the same, but the commands are adapted for Sway syntax.
@user 아래 my/ai-freom-anywahre 함수는 i3wm에서는 동작했던 코드야. 근데 sway에서는 동작이 안된다. 아래는 이맥스에서 알려준 에러메시지야. frame-cration-function을 말하고 있는데. X11 emacs와 pgtk emacs 간에 차이가 있는 것인가? 문제를 해결해줘.
No applicable method: frame-creation-function, ((scroll-bar-width . 8) (right-fringe . 8) (left-fringe . 8) (right-divider-width . 30) (internal-border-width . 20) (menu-bar-lines . 0) (tool-bar-lines . 0) (vertical-scroll-bars) (alpha-background . 93) (inhibit-double-buffering . t) (bottom-divider-width . 1) (buffer-predicate . doom-buffer-frame-predicate) (tab-bar-lines . 1) (window-system . x) (top . 0) (left . 1280) (width text-pixels . 640) (heigth text-pixels . 1080) (minibuffer . t))
;;;###autoload
(defun my/ai-from-anywhere ()
(interactive)
(let* ((screen-width (display-pixel-width))
(screen-height (display-pixel-height))
(frame-width (/ screen-width 3))
(frame-height screen-height)
(frame-left (- screen-width frame-width))
(frame-top 0)
(chat-frame (make-frame `((window-system . x) ; macOS use "ns"
(top . ,frame-top)
(left . ,frame-left)
(width . (text-pixels . ,frame-width))
(heigth . (text-pixels . ,frame-height))
(minibuffer . t)))))
(select-frame chat-frame))
(gptel "My:AI Chat" gptel-api-key nil)
(switch-to-buffer "My:AI Chat")
(delete-other-windows))
@assistant 에러 메시지는 frame-creation-function
메서드가 해당 인자들로 호출될 때 적용 가능한 메서드가 없다는 것을 의미합니다. 이는 Emacs 버전이나 GUI 툴킷(X11 또는 pgtk)에 따라 make-frame
함수가 받는 인자들이 다르기 때문에 발생할 수 있습니다.
문제 해결 방법:
-
Emacs 버전 확인: 먼저
emacs --version
명령으로 Emacs 버전을 확인하세요. X11 Emacs와 pgtk Emacs 간에 차이가 있을 수 있습니다. -
make-frame
인자 조정: X11과 pgtk 간에make-frame
함수에 전달해야 하는 인자가 다를 수 있습니다. 특히 크기 관련 인자(width
,height
)와 관련된 문제가 발생하기 쉽습니다. 다음을 시도해 보세요:-
width
및height
인자 수정: =text-pixels=를 사용하지 않고 숫자로 직접 픽셀 값을 전달해 보세요.(width . ,frame-width) (heigth . ,frame-height)
-
window-system
인자 제거 (테스트용):window-system
인자를 제거하고 시도해 보세요. Emacs가 자동으로 판단하도록 하는 것입니다.(make-frame `((top . ,frame-top) (left . ,frame-left) (width . ,frame-width) (heigth . ,frame-height) (minibuffer . t)))
-
-
display-graphic-p
확인:display-graphic-p
함수를 사용하여 Emacs가 그래픽 디스플레이를 사용하고 있는지 확인하고, 그래픽 디스플레이가 사용 가능할 때만 =make-frame=을 호출하도록 코드를 수정할 수 있습니다. -
디버깅:
edebug=를 사용하여 =make-frame
함수 호출 시 어떤 인자들이 전달되는지, 그리고 어떤 오류가 발생하는지 자세히 확인해 보세요.
수정된 코드 예시 (가정):
다음은 위에서 언급한 문제 해결 방법들을 적용한 예시 코드입니다. pgtk Emacs에서 크기 인자에 문제가 있을 수 있다는 가정하에 =text-pixels=를 제거했습니다.
;;;###autoload
(defun my/ai-from-anywhere ()
(interactive)
(let* ((screen-width (display-pixel-width))
(screen-height (display-pixel-height))
(frame-width (/ screen-width 3))
(frame-height screen-height)
(frame-left (- screen-width frame-width))
(frame-top 0)
(chat-frame (make-frame `((top . ,frame-top)
(left . ,frame-left)
(width . ,frame-width)
(heigth . ,frame-height)
(minibuffer . t)))))
(select-frame chat-frame))
(gptel "My:AI Chat" gptel-api-key nil)
(switch-to-buffer "My:AI Chat")
(delete-other-windows))
중요:
- 위 코드는 가정에 기반한 수정 사항이므로, 실제 환경에서 테스트해보고 필요한 부분을 추가적으로 수정해야 합니다.
- pgtk Emacs를 사용하고 있다면, 관련 문서나 정보를 찾아
make-frame
함수의 올바른 사용법을 확인하는 것이 좋습니다.
문제를 해결하기 위해 위 방법들을 시도해 보시고, 추가적인 오류 메시지나 정보를 알려주시면 더 자세한 도움을 드릴 수 있습니다.
@user