Yusuf Yaman'ın bloğu

FreeBSD Suckless st font boyutunu ayarlayacak tuşları değiştirme

Merhaba, bu rehberde FreeBSD üzerinde kullanmış olduğum suckless st programının varsayılan olarak terminaldeki fontu büyütmek için kullandığı tuşları nasıl değiştirebileceğinizi anlatacağım.

st, varsayılan olarak ctrl+shift+pageup/pagedown tuşlarını font boyutunu ayarlamak için kullanıyor fakat ben daha yeni %60 boyutlu bir klavye aldım ve bu tuşları basitçe kullanamıyorum o yüzden değiştirmem gerektiğini anladım. Ben bu tuşları ctrl+shift+Q/W/E olarak ayarlayacağım, siz farklı bir şeyler de yapabilirsiniz.

Öncelikle st programının bulunduğu ports ağacına gidelim.

sudo su
cd /usr/ports/x11/sterm

Yama oluşturacağımız için şimdiden yamaların bulunacağı files dizinini oluşturalım.

mkdir files

Şimdi kaynak kodunu çalışma dizinine çıkartalım.

make extract
You can build st with your own config.h using the ST_CONF knob:
make ST_CONF=/path/to/st/config.h install clean
===>  License MIT accepted by the user
===>   sterm-0.9.1 depends on file: /usr/local/sbin/pkg - found
===> Fetching all distfiles required by sterm-0.9.1 for building
===>  Extracting for sterm-0.9.1
=> SHA256 Checksum OK for st-0.9.1.tar.gz.

Şimdi st programının kaynak koduna gidelim.

cd work/st-0.9.1/

Şimdi config.def.h dosyasının orijinal bir kopyasını alalım. Bu yama oluşturmamız için gerekli çünkü iki dosyayı kıyaslayacağız.

cp config.def.h config.def.h.orig

Şimdi config.def.h dosyasını düzenleyelim ve değişikliklerimizi yapalım. Aşağıdaki çıktıda değişiklik yapacağımız satırlar mevcuttur.

grep zoom config.def.h
{ TERMMOD,              XK_Prior,       zoom,           {.f = +1} },
{ TERMMOD,              XK_Next,        zoom,           {.f = -1} },
{ TERMMOD,              XK_Home,        zoomreset,      {.f =  0} },

XK_Prior tuşu PageUp, XK_Next tuşu PageDown tuşlarını kastetmektedir. Kullanmak istediğiniz tuşların isimlerini xev programıyla öğrenebilirsiniz fakat sudo veya root ile çalıştırmanız gerekiyor -en azından benim durumumda- çünkü diğer türlü program bastığınız tuşların isimlerini göstermiyor.

Benim yaptığım değişiklik şu şekildedir.

cat ../../files/patch-04-change-zoom-keys
--- config.def.h.orig   2024-12-01 17:02:58.596980000 +0300
+++ config.def.h        2024-12-01 17:03:41.559865000 +0300
@@ -185,9 +185,9 @@
        { ControlMask,          XK_Print,       toggleprinter,  {.i =  0} },
        { ShiftMask,            XK_Print,       printscreen,    {.i =  0} },
        { XK_ANY_MOD,           XK_Print,       printsel,       {.i =  0} },
-       { TERMMOD,              XK_Prior,       zoom,           {.f = +1} },
-       { TERMMOD,              XK_Next,        zoom,           {.f = -1} },
-       { TERMMOD,              XK_Home,        zoomreset,      {.f =  0} },
+       { TERMMOD,              XK_E,           zoom,           {.f = +1} },
+       { TERMMOD,              XK_W,           zoom,           {.f = -1} },
+       { TERMMOD,              XK_Q,           zoomreset,      {.f =  0} },
        { TERMMOD,              XK_C,           clipcopy,       {.i =  0} },
        { TERMMOD,              XK_V,           clippaste,      {.i =  0} },
        { TERMMOD,              XK_Y,           selpaste,       {.i =  0} },

Bu durumda ctrl+shift+E/W/Q tuşları sırasıyla;

  1. Font boyutunu büyütecek,
  2. Font boyutunu küçültecek,
  3. Font boyutunu varsayılana sıfırlayacaktır.

Şimdi sıra geldi yaptığınız değişikliklerden yamayı oluşturmaya. Aşağıdaki komutlarla sırasıyla yama dosyasını oluşturuyoruz, st programının baş dizinine gidiyoruz, çalışma ortamını temizliyoruz ve st programını derleyip sisteme yüklüyoruz.

diff -Naur config.def.h.orig config.def.h > ../../files/patch-01-change-zoom-keys
cd ../..
make clean
make install clean

Şimdi st programını açıp yeni tuşlarınızı test edebilirsiniz.

Bana yardımcı olan kaynaklar;

  1. https://www.reddit.com/r/suckless/comments/yqja7h/name_of_buttons/
  2. https://www.reddit.com/r/suckless/comments/j4qx0b/change_st_font_size_on_laptop_wo_pageupdown_keys/?rdt=44256
  3. https://www.cl.cam.ac.uk/~mgk25/ucs/keysymdef.h

Okuduğunuz için teşekkürler.