КАКОДА подесим Window Maker

Упутство. [верзија 0.9.1, 31. март 2024.]

Страхиња Радић

Садржај

  1. Увод
  2. Инсталација Window Maker
    1. OpenBSD
  3. Фонт
  4. Иконе
    1. Nextlike
  5. GTK
  6. Qt
    1. Kvantum
    2. qt5ct
  7. Неки програми
  8. Резултат
  9. Недостаци
  10. TODO
  11. Фусноте

1. Увод

Window Maker је менаџер прозора који прати изглед оперативног система NeXTSTEP/OPENSTEP. У оквиру пројекта ГНУ постоји пројекат GNUstep, коме је циљ да се направи свеобухватни оквир за израду апликација које подсећају на NeXTSTEP у језику Objective‑C, који се користио за програмирање NeXTSTEP апликација. Иако Window Maker може да „коегзистира“ са GNUstep‑ом, они су два засебна пројекта, са различитим циљевима. Window Maker је само менаџер прозора, док је GNUstep комплетно окружење за апликације које подсећају на NeXTSTEP и OPENSTEP, као и основа за њихову изградњу. Уместо GNUstep‑а, Window Maker користи сопствену библиотеку WINGs (WINGs is Not GNUstep), која је мања и једноставнија, и написана у обичном C‑у.

2. Инсталација Window Maker

У већини система које подржава, Window Maker се може инсталирати преко менаџера пакета. Рецимо, у Alpine Linux‑у постоји пакет windowmaker, који се, уз одговарајуће пакете са наставцима -dev и -doc може инсталирати наредбом (као root1):

# apk add windowmaker windowmaker-dev windowmaker-doc

ипак, у Alpine Linux‑у ови пакети не садрже локализоване преводе порука (.mo датотеке), па се, ако желимо да користимо локализовани Window Maker, уместо тога он мора компајлирати из изворног кода.

Пошто су инсталирани неопходни пакети-предуслови (пун списак на страници Window Maker Compilation and Installation), ово се постиже наредбама (уз локализацију на српски):

$ git clone git://repo.or.cz/wmaker-crm.git
$ autoreconf -if
$ ./configure --without-menu-textdomain CATALOGS=sr.mo LINGUAS=sr \
	LIBS=-lintl MSGFMT=msgfmt && make
$ su -c 'make install'

након чега је пожељно да се инсталирају датотеке са подешавањима наредбом

$ wmaker.inst

или, ако оне већ постоје, да се регенерише кориснички мени наредбом:

$ wmgenmenu > $HOME/GNUstep/Defaults/WMRootMenu

2.1. OpenBSD

Наредба sed(1) под OpenBSD‑ом стриктно поштује POSIX стандард, којим је, између осталог, прописано да се последња у листи наредби груписаних витичастим заградама {} мора завршавати знаком за нови ред или тачком и запетом. Због овога се пре извршавања autoconf‑а морају изменити све датотеке које користе sed на овај начин:

$ grep -Flr ';p}' | xargs sed -i.bak -e 's/;p}/;p;}/g'

и онда извршити:

$ autoreconf -vif
$ ./configure --without-menu-textdomain CATALOGS=sr.mo LINGUAS=sr \
	LIBS=-lintl MSGFMT=msgfmt --mandir=/usr/local/man && gmake
$ su -c 'gmake install'

зато што Makefile‑ови генерисани configure скриптом подразумевају ГНУ‑ов Make, који се у OpenBSD‑у позива са gmake. Такође, подразумевани директоријум за странице упутства програма који не спадају у основу система је /usr/local/man, за разлику од ГНУ‑а са Линуксом, у коме је он стандардно /usr/local/share/man.

3. Фонт

Подразумевани фонт у NeXTSTEP‑у је била Helvetica. По мом мишљењу, најсличнији фонту Helvetica у савременим Униксоликим системима је Liberation Sans. Он се у већини система може инсталирати из менаџера пакета, нпр. у Alpine Linux‑у се одговарајући пакет зове font-liberation. Дакле, у Alpine Linux‑у се може извршити:

# apk add font-liberation

4. Иконе

Иконе из GNUstep‑а и OPENSTEP‑а, без посебног начина организације, се могу наћи на сајту Icons for Window Maker, AfterStep, GNUstep ala NeXTSTEP. Оне се могу додати у неки од директоријума подешених у Window Maker‑у као „путање за претрагу икона“, рецимо

$HOME/GNUstep/Library/Icons

и потом додељивати апликацијама и иконама у доку. Ипак, да би GTK и Qt апликације могле да их користе, неопходно је да буду у одговарајућим поддиректоријумима, да имају специфичне називе и датотеку index.theme. Због овога је неопходан и пакет икона GNUstep, који се може преузети са gnome-look.org или store.kde.org.

4.1. Nextlike

Тема GNUstep садржи иконе које су специфичне за GNUstep, и не одговарају у потпуности иконама из NeXTSTEP‑а. Ово је најуочљивије код икона фасцикли:

NeXTSTEP иконе
NeXTSTEP иконе
GNUstep иконе
GNUstep иконе

Приметимо да су иконе из датотеке openstepicons-1.1.tar.gz мало светлије него што би требало да буду, а да су иконе из датотеке gnustepicons-1.0.tar.gz тамније. Ово се може исправити прављењем нове теме, коју ћемо назвати Nextlike, комбиновањем постојеће теме, GNUstep, икона са горенаведеног сајта и икона из пакета wmicons. То се може урадити следећим наредбама (неопходан је ImageMagick, подразумева се да је тема GNUstep распакована у директоријум GNUstep унутар $HOME/.local/share/icons; ако тај директоријум не постоји, треба га креирати):

Наредбе за генерисање теме Nextlike (подужи листинг!)
$ mkdir -p $HOME/src
$ curl -O http://www.aiei.ch/gnustep/icons/two/gnustep-icons-1.0.tar.gz
$ tar xvf gnustep-icons-1.0.tar.gz
$ mv gnustep-icons-1.0 $HOME/src/
$ curl -O http://www.aiei.ch/gnustep/icons/one/openstepicons-1.1.tar.gz
$ tar xvf openstepicons-1.1.tar.gz
$ mv openstepicons-1.1 $HOME/src/
$ curl -O https://ftp.openbsd.org/pub/OpenBSD/snapshots/packages/amd64/\
wmicons-1.0p1.tgz
$ ( mkdir wmicons-1.0p1 && cd wmicons-1.0p1
    tar xvf ../wmicons-1.0p1.tgz
)
$ mv wmicons-1.0p1 $HOME/src/
$ ( cd $HOME/.local/share/icons
  cp -r GNUstep Nextlike
  cd Nextlike
  gsdir="$HOME/src/gnustep-icons-1.0/icons"
  osdir="$HOME/src/openstepicons-1.1/icons.tiff"
  osopt="-gamma 0.6"
  wmdir="$HOME/src/wmicons-1.0p1/share/WindowMaker/Pixmaps"
  :
  nldir=actions/48
  mkdir -p $nldir
  convert $osopt $osdir/WM.App-find.tiff $nldir/edit-find.png
  ln -s edit-find.png $nldir/edit-find-symbolic.png
  convert $gsdir/Magnifier.tiff $nldir/edit-find-replace.png
  ln -s edit-find-replace.png $nldir/edit-find-replace-symbolic.png
  ln -s edit-find.png $nldir/find-location.png
  convert $osopt -fill green -colorize 30 \
  	$osdir/AuthServer.App-ISDNIcon.tiff $nldir/call-start.png
  convert $osopt -fill red -colorize 30 \
  	$osdir/AuthServer.App-ISDNIcon.tiff $nldir/call-stop.png
  convert $osopt -fill blue -colorize 10 \
  	$osdir/AuthServer.App-ISDNIcon.tiff $nldir/call-stop.png
  convert $osopt -fill green -colorize 60 \
  	$osdir/WM.App-netUserAddress.tiff $nldir/user-available.png
  convert $osopt -fill yellow -colorize 80 \
  	$osdir/WM.App-netUserAddress.tiff $nldir/user-away.png
  convert $osopt -fill orange -colorize 60 \
  	$osdir/WM.App-netUserAddress.tiff $nldir/user-busy.png
  convert $osopt -fill blue -colorize 40 \
  	$osdir/WM.App-netUserAddress.tiff $nldir/user-idle.png
  convert $osopt $osdir/WM.App-netUserAddress.tiff $nldir/user-invisible.png
  convert $osopt -fill '#aaaaaa' -colorize 70 \
  	$osdir/WM.App-netUserAddress.tiff $nldir/user-offline.png
  ln -s ../../apps/48/accessories-text-editor.png $nldir/document-edit.png
  ln -s document-edit.png $nldir/document-edit-symbolic.png
  ln -s ../../devices/48/printer.png $nldir/document-print.png
  ln -s document-print.png $nldir/document-print-symbolic.png
  [ -f $nldir/edit-delete.png ] && rm $nldir/edit-delete.png
  convert $gsdir/M3Play_delete_song.tiff $nldir/edit-delete.png
  ln -s edit-delete.png $nldir/edit-delete-symbolic.png
  convert $osopt $osdir/Installer.App-Delete.tiff \
  	$nldir/edit-clear.png
  ln -s edit-clear.png $nldir/edit-clear-symbolic.png
  ln -s ../../places/48/user-home.png $nldir/go-home.png
  convert $osopt $osdir/ProductFeedbackn.tiff $nldir/edit-paste.png
  ln -s edit-paste.png $nldir/edit-paste-symbolic.png
  convert $osopt $osdir/ProjectBuilder.App-Documents_color.tiff \
  	$nldir/edit-copy.png
  ln -s edit-copy.png $nldir/edit-copy-symbolic.png
  convert $osopt $osdir/ProjectBuilder.App-text_win.tiff $nldir/document-new.png
  ln -s document-new.png $nldir/document-new-symbolic.png
  convert $osopt $osdir/WM.App-floppy.tiff $nldir/document-save.png
  ln -s document-save.png $nldir/document-save-symbolic.png
  convert $osopt $osdir/WM.App-openFloppy.tiff $nldir/document-save-as.png
  ln -s document-save-as.png $nldir/document-save-as-symbolic.png
  convert $osopt $osdir/WM.App-stop.tiff $nldir/process-stop.png
  convert $gsdir/MailIcon_box_add.tiff $nldir/list-add.png
  ln -s list-add.png $nldir/list-add-symbolic.png
  ln -sf list-add.png $nldir/tab-new.png
  ln -sf list-add.png $nldir/tab-new-symbolic.png
  convert $gsdir/MailIcon_box_delete.tiff $nldir/list-remove.png
  ln -s list-remove.png $nldir/list-remove-symbolic.png
  convert $gsdir/rwd.tiff -crop 12x+0x0 $nldir/go-previous.png
  convert $gsdir/ffwd.tiff -crop 12x+0x0 $nldir/go-next.png
  convert $gsdir/tostart.tiff $nldir/go-first.png
  convert $gsdir/toend.tiff $nldir/go-last.png
  convert $nldir/go-previous.png -rotate 90 $nldir/go-up.png
  convert $nldir/go-next.png -rotate 90 -flop $nldir/go-down.png
  convert $gsdir/tostart.tiff -rotate 90 $nldir/go-top.png
  convert $gsdir/toend.tiff -rotate 90 -flop $nldir/go-bottom.png
  ln -sf media-seek-forward.png $nldir/go-jump.png
  convert $gsdir/play.tiff $nldir/media-playback-start.png
  convert $gsdir/pause.tiff $nldir/media-playback-pause.png
  convert $gsdir/rwd.tiff $nldir/media-seek-backward.png
  convert $gsdir/ffwd.tiff $nldir/media-seek-forward.png
  ln -s go-first.png $nldir/media-skip-backward.png
  ln -s go-last.png $nldir/media-skip-forward.png
  convert $wmdir/FolderOpen.xpm $nldir/document-open.png
  ln -s document-open.png $nldir/document-open-symbolic.png
  convert $gsdir/MailIcon_send.tiff $nldir/document-send.png
  ln -s document-send.png $nldir/mail-send.png
  ln -sf mail-replied.png $nldir/mail-reply-sender.png
  convert $gsdir/MailIcon_forward.tiff $nldir/mail-unread.png
  ln -s mail-unread.png $nldir/mail-forward.png
  ln -s mail-read.png $nldir/mail-mark-read.png
  convert -grayscale Rec709Luma \
  	$gsdir/MailIcon_forward.tiff $nldir/mail-read.png
  convert $gsdir/MailIcon_reply.tiff $nldir/mail-replied.png
  convert $gsdir/MultipleSelection.tiff $nldir/edit-select-all.png
  convert $gsdir/gf_finger.tiff $nldir/edit-select.png
  convert -size 48x48 xc:none $nldir/system-users.png
  composite -geometry +8+0 $nldir/user-offline.png \
  	$nldir/system-users.png $nldir/system-users.png
  composite -geometry +0+8 $nldir/user-invisible.png \
  	$nldir/system-users.png $nldir/system-users.png
  :
  nldir=apps/48
  ln -sf gwenview.png $nldir/ristretto.png
  convert $osopt $osdir/WM.App-find.tiff $nldir/baloo.png
  ln -s ../../devices/48/video-display.png $nldir/preferences-desktop-display.png
  ln -sf help-contents.png $nldir/system-help.png
  ln -sf preferences-desktop-theme.png $nldir/qt5ct.png
  convert $osopt $osdir/Preferences.App-boot.tiff $nldir/system-shutdown.png
  convert $osopt $osdir/WM.App-openRoot.tiff $nldir/system-reboot.png
  convert $gsdir/PrefsIcon_Login.tiff $nldir/system-log-out.png
  ln -s ../../actions/48/edit-find.png $nldir/system-search.png
  convert $osopt $osdir/Preferences.App-Password.tiff $nldir/system-lock-screen.png
  convert $osopt $osdir/Interfacebuilder.App-fontmanager_nib.tiff \
  	$nldir/tools-check-spelling.png
  convert $osopt $osdir/Documentation-manual.tiff $nldir/help-contents.png
  ln -sf help-contents.png $nldir/help-browser.png
  ln -sf internet-mail.png $nldir/sylpheed.png
  ln -sf accessories-text-editor.png $nldir/xed.png
  :
  nldir=categories/48
  convert $osopt $osdir/WM.App-eunet.tiff $nldir/applications-internet.png
  :
  nldir=devices/48
  convert $osopt $osdir/WM.App-root.tiff $nldir/computer.png
  convert $osopt $osdir/Preferences.App-Mouse.tiff $nldir/input-mouse.png
  convert $osopt $osdir/Preferences.App-Keyboard-JTF.tiff $nldir/input-keyboard.png
  convert $osopt $osdir/Preferences.App-Monitor.tiff $nldir/video-display.png
  convert $wmdir/harddrive.tif $nldir/drive-harddisk.png
  ln -sf ../../actions/48/document-save.png $nldir/media-floppy.png
  ln -sf media-optical.png $nldir/drive-optical.png
  convert $osopt $osdir/Grab.App-CameraNormal.tiff $nldir/camera-photo.png
  convert $osopt $osdir/PrintManager.App-queue.tiff $nldir/scanner.png
  :
  nldir=places/48
  convert $osopt $osdir/WM.App-folder.tiff $nldir/folder.png
  convert $osopt $osdir/WM.App-eunet.tiff $nldir/network-workgroup.png
  cd $nldir
  find . -name 'folder-*.png' ! -type l -exec ln -sf folder.png {} \;
  [ -f folder-downloads.png ] && rm folder-downloads.png
  convert $wmdir/FolderLink.xpm folder-downloads.png
  ln -sf folder-downloads.png folder-download.png
  [ -f folder-html.png ] && rm folder-html.png
  convert $wmdir/FolderGlobe.xpm folder-html.png
  ln -sf folder-html.png folder-cloud.png
  ln -sf folder-html.png folder-dropbox.png
  ln -sf folder-html.png folder-gdrive.png
  ln -sf folder-html.png folder-network.png
  ln -sf folder-html.png folder-onedrive.png
  ln -sf folder-html.png folder-owncloud.png
  ln -sf folder-html.png folder-public.png
  ln -sf folder-html.png folder-publicshare.png
  [ -f folder-bookmark.png ] && rm folder-bookmark.png
  convert $wmdir/FolderBooks.xpm folder-bookmark.png
  ln -sf folder-bookmark.png bookmarks.png
  ln -sf folder-bookmark.png favorites.png
  ln -sf folder-bookmark.png folder-favorites.png
  cd -
  mv index.theme index.theme.old
  sed   -e 's/^\(Name=\).*/\1Nextlike/' \
  	-e 's/^\(Comment=\).*/\1Based on the theme GNUstep/' \
	-e '/^Directories/{s,actions/24,actions/48,;s:status/24,::;}' \
	-e '/^\[actions\/24\]/,/^$/{s,actions/24,actions/48,;
s,\(Size=\)24,\148,;s,\(Type=\)Fixed,\1Scalable,;}' \
	-e '/^\[status\/24\]/,/^$/d' \
	index.theme.old > index.theme
)

5. GTK

За GTK програме постоји тема OneStepBack, која се просто распакује у директоријум

$HOME/.local/share/themes

након чега се у датотеку $HOME/.gtkrc-2.0 може унети:

gtk-icon-theme-name = "Nextlike"
gtk-theme-name = "OneStepBack"
gtk-font-name = "Liberation Sans 10"
gtk-toolbar-style = GTK_TOOLBAR_BOTH
gtk-menu-images = 0
gtk-button-images = 0

а за GTK 3 треба изменити датотеку $HOME/.config/gtk-3.0/settings.ini 2:

[Settings]
gtk-application-prefer-dark-theme=0
gtk-icon-theme-name = Nextlike
gtk-theme-name = OneStepBack
gtk-font-name = Liberation Sans 10
gtk-overlay-scrolling = false

Директива gtk-overlay-scrolling служи да се искључи аутоматско сакривање трака за скроловање после извесног времена. Ни NeXTSTEP, ни OPENSTEP то нису радили. 😊

Додатак 2024-03-16: Уколико се у LibreOffice‑у неки елементи интерфејса приказују исписани црном бојом на црној позадини (OpenBSD-release 7.4, LibreOffice 7.6.2.1), што их ефективно чини потпуно нечитљивим, потребно је изменити $HOME/.local/share/themes/OneStepBack/gtk-3.0/gtk.css, додавањем

.view {
    background-color: @lighter_color;
}

после коментара који садржи текст headerbar.

6. Qt

За Qt постоји тема QTStep, која подржава погон за теме Kvantum. У пракси, доследни резултати се постижу само уколико је поред Kvantum‑а инсталиран и Qt5 Configuration Tool (qt5ct). Ово се у Alpine Linux‑у постиже наредбом:

# apk add qt5ct kvantum kvantum-qt5 kvantum-themes qt5ct

а за QTStep (подразумева се да се налазимо у $HOME/src; скрипт make_theme.sh такође захтева инсталиран, али на срећу не неопходно и постављен за подразумевану љуску, GNU Bash):

$ git clone https://github.com/andbgr/QTStep
$ cd QTStep/kvantum/QTStep.source
$ ./make_theme.sh WMakerDefault

овим ће у надређеном директоријуму бити генерисана тема QTStepWMakerDefault у истоименом поддиректоријуму. У последњој наредби може се уместо WMakerDefault ставити било који назив теме за који постоји датотека colors.[назив] у директоријуму QTStep.source.

6.1. Kvantum

У програму kvantummanager потребно је инсталирати жељену тему, овде QTStepWMakerDefault. То се постиже активирањем Select a Kvantum theme folder, навигацијом и одабиром директоријума $HOME/src/QTStep/kvantum/QTStepWMakerDefault, и затим активирањем Install this theme. Затим се активира Change/Delete Theme, одабере QTStepWMakerDefault, и активира Use this theme.

После овога се активира Configure Active Theme и:

6.2. qt5ct

Следећи кораци су у програму qt5ct.

На крају, потребно је подесити променљиве окружења у датотекама са подешавањима ($HOME/.profile, $HOME/.bashrc, итд.), тако да је постављена променљива

export QT_QPA_PLATFORMTHEME=qt5ct

а није, рецимо, променљива QT_STYLE_OVERRIDE. Такође, није на одмет да у датотеци $HOME/.config/Trolltech.conf стоји:

[Qt]
style=kvantum

7. Неки програми

Највећа сличност са NeXTSTEP‑ом се, наравно, постиже употребом GNUstep апликација. Међутим, пошто је ово упутство усредсређено на Window Maker, ево неких предлога за најчешће апликације:

8. Резултат

Слика 1: xed, PCManFM, xarchiver
Слика 1: xed, PCManFM, xarchiver

Слика 2: GIMP
Слика 2: GIMP

9. Недостаци

Ова листа недостатака нипошто није исцрпна, и допуњаваћу је у складу са уоченим стањем.

10. TODO

За урадити:

11. Фусноте


1. Овде и у целом тексту се користи стандардна нотација # испред наредби које би требало извршити као корисник root, и $ испред наредби које би требало извршити као обичан корисник. Те знакове не треба дословно уносити као део наредби.

2. Видети и одељак Недостаци.


Generated by slweb © 2020-2024 Strahinya Radich.