I’ve installed mrxvt on Cygwin once before — it was not as simple as it might have been. So I’ve moved jobs and computers and now I want to install it on Cygwin on Win 10 64-bit. Again, not as simple as I might have liked.
First, install the dependencies for building:
These are: xorg-server-devel, automake, autoconf, libtool, make (thought more about make below)
I used
$ apt-cyg install xorg-server-devel automake autoconf libtool
from the Cygwin command line, but you may just as well use setup.exe.
Then, grab the sources. Let’s try both — stable and unstable.
First, tried 0.4.2 — turns out I need to specify build type.
$ ./bootstrap.sh $ ./configure --enable-everything --disable-debug --build amd64 $ make
Bingo! The binary is in src/mrxvt.exe and I can ‘$ make install‘ if I want.
How about 0.5.4 now?
There is no bootsrap.sh, so copy it in from 0.4.2 (or just run ./configure without bootstrap).
$ cp ../mrxvt-0.4.2/bootstrap.sh . $ ./bootstrap $ make C:/Users/darren/installs/getgnuwin32/GetGnuWin32/gnuwin32/bin/make all-recursive make[1]: Entering directory `C:/cygwin64/home/darren/installs/mrxvt/mrxvt-0.5.4' Making all in doc make[2]: Entering directory `C:/cygwin64/home/darren/installs/mrxvt/mrxvt-0.5.4/doc' make[2]: Nothing to be done for `all'. make[2]: Leaving directory `C:/cygwin64/home/darren/installs/mrxvt/mrxvt-0.5.4/doc' Making all in src make[2]: Entering directory `C:/cygwin64/home/darren/installs/mrxvt/mrxvt-0.5.4/src' gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c command.c gcc: fatal error: no input files compilation terminated. make[2]: *** [command.o] Error 1 make[2]: Leaving directory `C:/cygwin64/home/darren/installs/mrxvt/mrxvt-0.5.4/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `C:/cygwin64/home/darren/installs/mrxvt/mrxvt-0.5.4' make: *** [all] Error 2
Errors! On the other hand, it seems to be getting make from a gnuwin32 install, not from Cygwin. Worry about that later.
First, did this — went into src and ran the compile command for command.c manually (copied from output above):
$ cd src $ gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c command.c command.c: In function ‘rxvt_process_keyrelease’: command.c:2801:2: warning: ‘XKeycodeToKeysym’ is deprecated [-Wdeprecated-declarations] ks = XKeycodeToKeysym(r->Xdisplay, ev->keycode, 0); ^~ In file included from rxvt.h:222:0, from command.c:40: /usr/include/X11/Xlib.h:1687:15: note: declared here extern KeySym XKeycodeToKeysym(
And that indeed generates process.o. So, what if I run the compile command on all the .c files manually? It’s not hard. Here’s a little script:
$ cat file gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c command.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c debug.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c encoding.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c grkelot.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c init.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c logging.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c macros.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c main.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c menubar.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c misc.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c mjpg.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c mpng.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c netdisp.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c pixmap.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c ptytty.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c rxvt.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c rxvtmem.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c screen.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c scrollbar.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c scrollbar-next.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c scrollbar-plain.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c scrollbar-rxvt.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c scrollbar-sgi.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c scrollbar-xterm.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c session.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c strings.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c tabbar.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c transparent.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c xdefaults.c gcc -DPKG_CONF_DIR=\"/usr/local/etc/mrxvt\" -I. -I.. -g -O2 -Wall -fPIC -c xftacs.c
(I just made this by copying the compile command and listing all .c files to a file then prepending the compile command to each line using vim).
OK, in src, where my file full of compile commands is called ‘file’:
$ bash file
OK, yes! Now I have a bunch of .o files. Now go to build directory and rerun make.
$ cd .. $ make
Success! The mrxvt.exe binary in in the 0.5.4 src directory. I can run both:
Now I can install whichever one I want to use.
Question: Was the 0.5.4 problem real or due to using the wrong make.exe? After moving the .o and mrxvt.exe out of src, tried this:
$ apt-cyg install make $ which make /usr/bin/make $ ./configure --enable-everything --disable-debug --build amd64 $ make gcc: fatal error: no input files
So, no, the problem was not the wrong make.
Next: added to menu:
$ cd /usr/share/applications/ $ cp uxterm.desktop mrxvt.desktop
Then changed references to uxterm to mrxvt, and changed the icon name to mrxvt-48x48:
$ cat mrxvt.desktop [Desktop Entry] Name=mrxvt #GenericName=Terminal Comment=tabbed terminal emulator for the X window system Exec=mrxvt Terminal=false Type=Application
Icon=mrxvt-48x48 Categories=System;TerminalEmulator; Keywords=shell;prompt;command;commandline;cmd;
Then, went to this post, copied the png mrxvt icon and used gimp to save it as a 48 × 48 .png file called mrxvt-48x48.png, and put it in:
/usr/share/pixmaps
But then I found the icons in /usr/local/share/pixmaps/ so I just used one of them instead.