ddakong 한글입력기 릴리즈


https://github.com/ageldama/term-ddakong

일단 내가 fbterm에서 가볍게 한글쓰고 싶어서 만듦.

ansi c99만으로 가볍게 작성했다. 다른 라이브러리 의존않고. 만족스럽다. 빌드하니까 25 KB 정도 나오네. 만족.

더 했으면 하는 일들은:

  1. lua -or- dlopen 등으로 다른 입력기 지원하기 (예: 3벌식)
  2. utf-8 이외의 인코딩 지원하기
  3. raspberry pi 32/64 바이너리 릴리즈 (armhf, arm64)
  4. 소스코드 조금 포매팅, 주석작성, 문서화
  5. 빌드개선 : 사용하는 함수 등 체크하기 강화 (예: epoll …어차피 거의 다 있지만.)
  6. 스크린샷? ㅎㅎ

i3 키바인딩을 rofi으로 확인하고 실행하기


i3wm 써서 매일 리눅스 사용.

키보드만 써서 사용하는건 좋은데, 키바인딩이 늘어나서 맨날 i3 키바인딩 까먹음.

그래서 만들어봤다:

  1. 현재 i3 config에 등록된 키바인딩 자동으로 표시 🖥️
  2. rofi에서 선택하면, 그걸 또 실행까지 해줌 🚀

/2025-04apr/i3-bindsyms-rofi-dmenu.png

gist: https://gist.github.com/ageldama/377d00159cfe0cb387f20297ca6a5e6b

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
  #!/usr/bin/env perl

  use strict;
  use warnings;
  use Carp;
  use IPC::Open2;


  sub escape_html {
    $_ = shift;
    s/&/&/g;
    s/</&lt;/g;
    s/>/&gt;/g;
    s/'"'/&quot;/g;
    return $_;
  }

  my @bindsyms = 
    grep(/^bindsym/, # only `bindsym`-s.
         grep(!/(^#)|(^\s*$)/, # omit comment or empty lines.
              qx<i3-msg -t get_config>));

  chomp @bindsyms;

  map { s/^bindsym //g } @bindsyms;

  my @key_to_cmd = map {
    my @m = $_ =~ /^(?<key>\S+)\s+(?<cmd>.+)$/;
    \@m;
  } @bindsyms;

  my @dmenu_items = map {
    my ($key, $cmd) = ($_->[0], $_->[1]);

    $key = escape_html($key);
    $key = "<span size='large' weight='heavy'>$key</span>";

    $cmd = escape_html($cmd);
    $cmd = "\t\t$cmd";

    my $result = join "\n", $key, $cmd;
    $result .= "\0";
    $result;
  } @key_to_cmd;

  # p @dmenu_items;

  my $pid = open2(
    my $stdout, my $stdin,
    "rofi -dmenu -p 'i3 keybindings' -sep '\\0' -eh 2 -markup-rows -format i"
   ) or confess;

  foreach (@dmenu_items) {
    print $stdin $_;
    # print $_;
  }
  close($stdin);

  my $stdout_ = do { local($/); <$stdout> };
  close($stdout);

  waitpid($pid, 0);
  my $exit_code = $? >> 8;
  # print STDERR "exit_code: $exit_code\n";

  if ($exit_code == 0) {
    chomp $stdout_;
    my $cmd = $key_to_cmd[$stdout_]->[1];
    print STDERR "STDOUT: [$stdout_] => [$cmd]\n";
    `i3-msg '$cmd'`;
  } else {
    print STDERR "EXIT: $exit_code\n";
  }

요걸 저장하고, $HOME/.config/i3/config 에 다음을 추가하여 ⌨️ Super+F1 으로 등록:

가볍고 빠른 antiX Linux + runit, koreader 그리고 bloatware


antiX linux

오래된 랩탑으로 fedora 그냥 아무 생각없이 대충 쓰는데 좀 버벅. 어차피 메인드라이버도 아니고 그냥 그러려니 하고 살다가, 좀 답답해서 lightweight linux distro을 골라봤다.

https://antixlinux.com/

거기에 이전에 시도했던 void linux에서 마음에 들었었던 runit을 init으로 쓰는 spin으로 선택해서 설치했다.

결과는… 놀라울 정도로 가벼웠다.

luks disk encryption + btrfs을 기존에는 적용했다가(btrfs이 기본옵션이어서 귀찮아서), 이번에는 그냥 ext4만으로 설치해서 더 가벼운걸까 싶기도 하고.

systemd은 익숙해질수로 편안해지기는 했었는데, 그럼에도 확실히 전통적인 linux/unix의 그것과는 조금 달라서 처음에 당혹스럽긴 했었었다.