BIBLIOGRAPHY

History

  • [2025-04-07 Mon 11:16] 잠시만. 이건 있어야 돼. 핵심 시나리오니까

Sway (2022-W24)

  • [2022-06-17 Fri 12:25] 아직 멀었다. 그냥 X11을 사용하라.
  • [2024-01-11 Thu 12:25] 이때는 구동도 못하던 때다. 지금은 활용 가능하지만 그렇다고 속도면에서 조건 좋은 것만 아님. 활용 때문에 당장 못씀.
  • i3 와 무엇이 다른가?
    • i3WM 은?
      • i3 는 X 윈도 시스템용 타일링 창 관리자로, C 로 작성했다. 타일링, 스태킹, 탭 배치를 지원하며 이를 동적으로 관리한다. 설정은 순수 텍스트 파일에서 하며 그 기능은 유닉스 도메인 소켓과 많은 프로그래밍 언어의 JSON 기반 IPC 를 사용해 확장할 수 있다. 위키백과
    • i3 와 다른 점
      • i3 를 대체하고 환경 설정을 호환하는 것을 목표로 하지만, 키 바인딩은 일부 다르고, i3Gap 을 포함하고 있다. 내가 느낀 바, i3 의 사용성은 그대로 가져오면서 Wayland 컴포지터로 개발한 프로젝트라고 볼 수 있다.
  • 그렇다면, i3 가 지향하는 Tiling WM 은 무엇이며 어떤 장점이 있기에 사용자들이 있는가? 무엇을 기대할 수 있는가? — 이 부분이 내가 주목하는 점이다.

i3wm regolith keybindings

Super-Shift-/ 가장 중요함. 키바인딩 뷰

[2023-10-04 Wed 17:41]

Scratchpad and Floating Toggle

[2023-10-04 Wed 17:41]

방금 전 관련 유튜브 보다가 따라 하기로 함. 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

[2023-10-04 Wed 18:00]

이걸 잘 써야 창 사이에 편하게 이동한다. 어짜피 현재 워크스페이스 안에서 이동하는 것임.

|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 함수가 받는 인자들이 다르기 때문에 발생할 수 있습니다.

문제 해결 방법:

  1. Emacs 버전 확인: 먼저 emacs --version 명령으로 Emacs 버전을 확인하세요. X11 Emacs와 pgtk Emacs 간에 차이가 있을 수 있습니다.

  2. make-frame 인자 조정: X11과 pgtk 간에 make-frame 함수에 전달해야 하는 인자가 다를 수 있습니다. 특히 크기 관련 인자(width, height)와 관련된 문제가 발생하기 쉽습니다. 다음을 시도해 보세요:

    • widthheight 인자 수정: =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)))
  3. display-graphic-p 확인: display-graphic-p 함수를 사용하여 Emacs가 그래픽 디스플레이를 사용하고 있는지 확인하고, 그래픽 디스플레이가 사용 가능할 때만 =make-frame=을 호출하도록 코드를 수정할 수 있습니다.

  4. 디버깅: 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