Warning: there may be occasional oddness due to css and blog edits. **KNOWN ISSUE: possible hidden text**
Showing posts with label fvwm. Show all posts
Showing posts with label fvwm. Show all posts

Monday, May 10, 2021

New FVWM! Transition, initial steps

I have been using FVWM as my primary desktop for most of the last nearly twenty years if it has been around that long.  Within the last few years I have customized more and more of the various menus and other effects of my desktop.  I haven't configured anything too crazy, it doesn't look or act like windows, or any other desktop.  Mostly I made adjustments to how various common programs look, how their window is styled, and setup a number of conveniences in the menus or simple .fvwmrc embedded scripts.

A short time ago, I just saw FVWM3 scroll across my ports tree update output, and so I had to peek at freshports to see what it was about.  From there, I went to the FVWM3 webpage to peruse its change logs and readme files and other prliminary documentaion on the site.  One specific thing made me smile, the inclusion of a FreeBSD originated file somewhere in the mix.  The list of changes and bug fixes is quite impressive.  I have not had significant difficulties with FVWM except for struggling somewhat to include any bit of shortcut automation in the .fvwmrc file, or when any certain game needs vsync but I have no idea how to set that up or do what is needed to satisfy that complaint from the game (Veloren).

I saw mention in the commit message for FVWM3 something about M4 being left behind in favor of Go, but aside from this seeming to be about modules, I couldn't find anything more specific or descriptive about it.  The old (current FVWM2) configuration file and methods will be temporarily grandfathered in, which is very nice for the transition period.  I am mildly hesitant to switch as I have occasionally had drastic troubles with graphics in general in the past.  I can certainly maintain both builds in poudriere, and choose which one to keep installed.  This will leave me a fallback if anything catastrophic happens and I somehow cannot use FVWM3 at all, especially if it is something beyond my direct control.  My other concern is how exactly the new .fvwmrc file will be organized, structured, and how I will setup anew much of what I have now.  What I would be very pleased to see would be a more automated, transparent, or FVWM method to reach the .desktop files or similar, and how I could have any built menu reflect the up to the moment installed applications.  I tend to update software on my system as something to do, with poudriere it is much less invasive or disruptive for the most part.  There are still those rare times when something fails to build, then pkg does only half the job, removing the old but being unable to replace it with the new.  

Now we get ready to put poudriere on task to build this new FVWM3 along with the semi-standard X11 environment software for good measure and also just in case, to have a proper bulk build though quite small in comparison to my usual.  Instead, I decided to get an all-depends-list for FVWM3.  

make -C /usr/ports/x11-wm/fvwm3 all-depends-list > fvwm3-and-dependents

/usr/ports/ports-mgmt/pkg
/usr/ports/textproc/rubygem-asciidoctor
/usr/ports/lang/ruby30
/usr/ports/devel/libffi
/usr/ports/devel/ccache
/usr/ports/print/indexinfo
/usr/ports/misc/dejagnu
/usr/ports/devel/gmake
/usr/ports/lang/expect
/usr/ports/devel/autoconf
/usr/ports/devel/m4
/usr/ports/print/texinfo
/usr/ports/misc/help2man
/usr/ports/lang/perl5.32
/usr/ports/devel/p5-Locale-libintl
/usr/ports/converters/libiconv
/usr/ports/converters/p5-Text-Unidecode
/usr/ports/textproc/p5-Unicode-EastAsianWidth
/usr/ports/devel/ncurses
/usr/ports/devel/pkgconf
/usr/ports/devel/kyua
/usr/ports/devel/lutok
/usr/ports/lang/lua54
/usr/ports/devel/libedit
/usr/ports/databases/sqlite3
/usr/ports/lang/tcl86
/usr/ports/devel/autoconf-wrapper
/usr/ports/devel/automake
/usr/ports/security/libressl
/usr/ports/textproc/libyaml
/usr/ports/math/gmp
/usr/ports/devel/libunwind
/usr/ports/devel/ruby-gems
/usr/ports/lang/python39
/usr/ports/devel/readline
/usr/ports/x11/libICE
/usr/ports/x11/xorgproto
/usr/ports/devel/xorg-macros
/usr/ports/x11/xtrans
/usr/ports/x11/libX11
/usr/ports/x11/libxcb
/usr/ports/x11/xcb-proto
/usr/ports/textproc/libxml2
/usr/ports/devel/libpthread-stubs
/usr/ports/x11/libXau
/usr/ports/x11/libXdmcp
/usr/ports/x11/libXext
/usr/ports/x11/libXrandr
/usr/ports/x11/libXrender
/usr/ports/x11-toolkits/libXt
/usr/ports/x11/libSM
/usr/ports/x11/libXcursor
/usr/ports/x11/libXfixes
/usr/ports/x11-fonts/libXft
/usr/ports/print/freetype2
/usr/ports/archivers/brotli
/usr/ports/devel/libtool
/usr/ports/graphics/png
/usr/ports/x11-fonts/fontconfig
/usr/ports/devel/gperf
/usr/ports/devel/meson
/usr/ports/devel/py-setuptools
/usr/ports/devel/ninja
/usr/ports/devel/py-pytest-xdist
/usr/ports/devel/py-setuptools_scm
/usr/ports/textproc/py-toml
/usr/ports/devel/py-pytest
/usr/ports/devel/py-atomicwrites
/usr/ports/devel/py-attrs
/usr/ports/devel/py-coverage
/usr/ports/devel/py-hypothesis
/usr/ports/devel/py-sortedcontainers
/usr/ports/math/py-numpy
/usr/ports/lang/gcc10
/usr/ports/devel/binutils
/usr/ports/math/mpfr
/usr/ports/math/mpc
/usr/ports/lang/cython
/usr/ports/math/cblas
/usr/ports/math/suitesparse
/usr/ports/devel/cmake
/usr/ports/textproc/py-sphinx
/usr/ports/textproc/py-sphinxcontrib-applehelp
/usr/ports/textproc/py-sphinxcontrib-devhelp
/usr/ports/textproc/py-sphinxcontrib-jsmath
/usr/ports/textproc/py-sphinxcontrib-htmlhelp
/usr/ports/textproc/py-sphinxcontrib-serializinghtml
/usr/ports/textproc/py-sphinxcontrib-qthelp
/usr/ports/devel/py-Jinja2
/usr/ports/textproc/py-markupsafe
/usr/ports/devel/py-babel
/usr/ports/devel/py-pytz
/usr/ports/textproc/py-pygments
/usr/ports/textproc/py-docutils
/usr/ports/textproc/py-snowballstemmer
/usr/ports/textproc/py-pystemmer
/usr/ports/textproc/py-alabaster
/usr/ports/graphics/py-imagesize
/usr/ports/www/py-requests
/usr/ports/security/py-certifi
/usr/ports/textproc/py-chardet
/usr/ports/devel/py-pytest-runner
/usr/ports/dns/py-idna
/usr/ports/net/py-urllib3
/usr/ports/archivers/py-brotlipy
/usr/ports/devel/py-cffi
/usr/ports/devel/py-pycparser
/usr/ports/net/py-pysocks
/usr/ports/security/py-cryptography
/usr/ports/devel/py-six
/usr/ports/security/py-cryptography-vectors
/usr/ports/devel/py-iso8601
/usr/ports/devel/py-pretend
/usr/ports/security/py-openssl
/usr/ports/devel/py-flaky
/usr/ports/devel/py-nose
/usr/ports/devel/py-genty
/usr/ports/devel/py-mock
/usr/ports/security/ca_root_nss
/usr/ports/security/py-trustme
/usr/ports/devel/py-pytest-cov
/usr/ports/security/py-service_identity
/usr/ports/devel/py-pyasn1-modules
/usr/ports/devel/py-pyasn1
/usr/ports/devel/py-pytest-timeout
/usr/ports/misc/py-pexpect
/usr/ports/sysutils/py-ptyprocess
/usr/ports/devel/py-pytest-freezegun
/usr/ports/devel/py-freezegun
/usr/ports/devel/py-dateutil
/usr/ports/databases/py-sqlite3
/usr/ports/www/py-tornado
/usr/ports/devel/py-pytest-mock
/usr/ports/devel/py-packaging
/usr/ports/devel/py-pyparsing
/usr/ports/www/py-html5lib
/usr/ports/converters/py-webencodings
/usr/ports/devel/py-typed-ast
/usr/ports/ftp/curl
/usr/ports/www/libnghttp2
/usr/ports/archivers/zstd
/usr/ports/archivers/liblz4
/usr/ports/sysutils/coreutils
/usr/ports/textproc/expat2
/usr/ports/shells/bash
/usr/ports/devel/bison
/usr/ports/devel/jsoncpp
/usr/ports/devel/libuv
/usr/ports/security/rhash
/usr/ports/archivers/libarchive
/usr/ports/archivers/lzo2
/usr/ports/math/metis
/usr/ports/math/blas
/usr/ports/math/lapack
/usr/ports/devel/py-pympler
/usr/ports/devel/py-zope.interface
/usr/ports/devel/py-pluggy
/usr/ports/devel/py-py
/usr/ports/devel/py-wcwidth
/usr/ports/devel/py-more-itertools
/usr/ports/devel/py-pip
/usr/ports/textproc/py-furo
/usr/ports/www/py-beautifulsoup
/usr/ports/www/py-soupsieve
/usr/ports/devel/py-lxml
/usr/ports/textproc/libxslt
/usr/ports/security/libgcrypt
/usr/ports/security/libgpg-error
/usr/ports/textproc/py-sphinx-inline-tabs
/usr/ports/devel/py-csv23
/usr/ports/devel/py-invoke
/usr/ports/devel/py-pytest-rerunfailures
/usr/ports/devel/py-yaml
/usr/ports/devel/py-scripttest
/usr/ports/devel/py-tox
/usr/ports/sysutils/py-filelock
/usr/ports/devel/py-virtualenv
/usr/ports/textproc/py-sphinx_rtd_theme
/usr/ports/textproc/py-towncrier
/usr/ports/devel/py-click
/usr/ports/devel/py-incremental
/usr/ports/www/py-werkzeug
/usr/ports/devel/py-watchdog
/usr/ports/devel/py-pathtools
/usr/ports/devel/py-argh
/usr/ports/net/py-eventlet
/usr/ports/dns/py-dnspython
/usr/ports/devel/py-greenlet
/usr/ports/devel/py-wheel
/usr/ports/devel/mercurial
/usr/ports/devel/git
/usr/ports/devel/subversion
/usr/ports/security/gnupg
/usr/ports/security/libassuan
/usr/ports/security/libksba
/usr/ports/devel/npth
/usr/ports/security/pinentry
/usr/ports/security/pinentry-tty
/usr/ports/devel/apr1
/usr/ports/databases/gdbm
/usr/ports/databases/db5
/usr/ports/java/openjdk7
/usr/ports/archivers/zip
/usr/ports/archivers/unzip
/usr/ports/print/cups
/usr/ports/devel/xdg-utils
/usr/ports/textproc/minixmlto
/usr/ports/textproc/docbook-xsl
/usr/ports/textproc/xmlcatmgr
/usr/ports/textproc/docbook
/usr/ports/textproc/docbook-sgml
/usr/ports/textproc/iso8879
/usr/ports/textproc/docbook-xml
/usr/ports/textproc/xmlcharent
/usr/ports/textproc/sdocbook-xml
/usr/ports/textproc/html2text
/usr/ports/misc/hicolor-icon-theme
/usr/ports/x11/xprop
/usr/ports/x11/xset
/usr/ports/x11-toolkits/libXmu
/usr/ports/print/libpaper
/usr/ports/java/bootstrap-openjdk6
/usr/ports/java/java-zoneinfo
/usr/ports/audio/alsa-lib
/usr/ports/x11/libXi
/usr/ports/x11/libXtst
/usr/ports/java/javavmwrapper
/usr/ports/x11-fonts/dejavu
/usr/ports/x11-fonts/mkfontscale
/usr/ports/x11-fonts/libfontenc
/usr/ports/databases/mysql80-client
/usr/ports/devel/llvm11
/usr/ports/textproc/py-recommonmark
/usr/ports/textproc/py-CommonMark
/usr/ports/devel/py-future
/usr/ports/devel/swig
/usr/ports/devel/pcre
/usr/ports/devel/libevent
/usr/ports/devel/icu
/usr/ports/devel/protobuf
/usr/ports/devel/googletest
/usr/ports/textproc/groff
/usr/ports/print/psutils
/usr/ports/print/gsfonts
/usr/ports/textproc/uchardet
/usr/ports/textproc/utf8proc
/usr/ports/www/serf
/usr/ports/devel/scons
/usr/ports/sysutils/py-execnet
/usr/ports/devel/py-apipkg
/usr/ports/devel/py-pytest-forked
/usr/ports/devel/libbson
/usr/ports/converters/fribidi
/usr/ports/graphics/librsvg2-rust
/usr/ports/lang/rust
/usr/ports/lang/vala
/usr/ports/devel/gettext-runtime
/usr/ports/devel/glib20
/usr/ports/devel/gettext-tools
/usr/ports/devel/libtextstyle
/usr/ports/devel/gobject-introspection
/usr/ports/graphics/cairo
/usr/ports/x11/pixman
/usr/ports/graphics/mesa-libs
/usr/ports/graphics/wayland-protocols
/usr/ports/graphics/wayland
/usr/ports/devel/libepoll-shim
/usr/ports/textproc/py-mako
/usr/ports/www/py-beaker
/usr/ports/devel/llvm10
/usr/ports/x11/libXdamage
/usr/ports/x11/libxshmfence
/usr/ports/x11/libXxf86vm
/usr/ports/graphics/libdrm
/usr/ports/devel/libpciaccess
/usr/ports/misc/pciids
/usr/ports/print/harfbuzz
/usr/ports/textproc/gtk-doc
/usr/ports/textproc/itstool
/usr/ports/textproc/py-libxml2
/usr/ports/textproc/yelp-tools
/usr/ports/textproc/yelp-xsl
/usr/ports/graphics/graphite2
/usr/ports/print/py-fonttools3
/usr/ports/devel/py-fs2
/usr/ports/devel/py-appdirs
/usr/ports/graphics/gdk-pixbuf2
/usr/ports/misc/shared-mime-info
/usr/ports/graphics/jasper
/usr/ports/graphics/jpeg-turbo
/usr/ports/devel/nasm
/usr/ports/graphics/libGLU
/usr/ports/graphics/freeglut
/usr/ports/graphics/tiff
/usr/ports/graphics/jbigkit
/usr/ports/x11-toolkits/pango
/usr/ports/x11-fonts/xorg-fonts-truetype
/usr/ports/x11-fonts/font-bh-ttf
/usr/ports/x11-fonts/bdftopcf
/usr/ports/x11-fonts/font-misc-meltho
/usr/ports/x11-fonts/font-misc-ethiopic
/usr/ports/x11-fonts/encodings
/usr/ports/x11-fonts/font-util

In order to use that with poudriere, I will need to remove the /usr/ports/ portion which I can do fairly easily in vi.  Once in vi, I type :%s/\/usr\/ports\///g which very neatly and efficiently removes the text, then I save the file by simply typing ZZ.  Ordinarily I would take the extra step to organize those port origins alphabetically and remove duplicates, but poudriere will do this for me.  One thing I need to be sure to do, is add x11-wm/fvwm3 to this list or it will not get built with all of its indirect dependencies.  This file as is should suffice for my present needs, and I do not expect to ever need to edit it or doublecheck anything.  Let's tell poudriere to get to work.  

portsup ; poudriere bulk -f `p-keg-deblack fvwm3-and-dependents` -j 13amd64

I can only hope that the list I made had included a number of things I would not need.  The poudriere build finished surprisingly fast, considering I told it to process seventy port origins.  The tail end of the output tells the majority of the story.

[00:12:57] Creating pkg repository
Creating repository in /tmp/packages: 100%
Packing files for repository: 100%
[00:18:46] Committing packages to repository: /usr/local/poudriere/data/packages/13amd64-default/.real_1620639651 via .latest symlink
[00:18:46] Removing old packages
[00:18:46] Built ports: textproc/py-mako textproc/py-recommonmark devel/py-atomicwrites devel/py-wcwidth devel/py-incremental devel/py-py devel/py-greenlet devel/py-argh net/py-eventlet devel/py-pytest devel/py-appdirs devel/py-pyasn1 devel/py-apipkg textproc/py-towncrier devel/py-pathtools math/cblas textproc/py-sphinx_rtd_theme devel/py-sortedcontainers devel/py-pytest-forked devel/py-fs2 devel/py-pyasn1-modules sysutils/py-filelock sysutils/py-execnet textproc/py-sphinx-inline-tabs devel/py-coverage devel/py-freezegun textproc/py-furo devel/py-watchdog security/py-trustme devel/py-pytest-rerunfailures security/py-service_identity devel/py-pytest-runner devel/py-pytest-mock devel/py-virtualenv devel/py-scripttest devel/py-mock devel/py-genty devel/py-wheel devel/py-tox devel/py-pytest-xdist devel/py-invoke devel/py-pympler devel/py-zope.interface devel/py-typed-ast devel/py-pytest-timeout devel/git devel/py-csv23 devel/py-pretend www/py-werkzeug sysutils/coreutils devel/py-pytest-cov devel/libbson devel/mercurial devel/py-flaky devel/py-pytest-freezegun print/py-fonttools3 security/py-cryptography-vectors
[00:18:46] Skipped ports: databases/db5 devel/apr1 devel/py-hypothesis devel/subversion graphics/librsvg2-rust java/openjdk7 math/py-numpy www/serf
[00:18:46] Ignored ports: java/bootstrap-openjdk6 math/suitesparse security/gnupg lang/rust textproc/rubygem-asciidoctor
[13amd64-default] [2021-05-10_04h22m05s] [committing:] Queued: 70 Built: 57 Failed: 0  Skipped: 8  Ignored: 5  Tobuild: 0   Time: 00:18:43
[00:18:46] Logs: /usr/local/poudriere/data/logs/bulk/13amd64-default/2021-05-10_04h22m05s
[00:18:46] Cleaning up
13amd64-default: removed
13amd64-default-n: removed
[00:18:46] Unmounting file systems

All that is left for the moment is to suffer the consequences of switching from one to the next.  I will have to deinstall FVWM2 in order to install FVWM3, and this should be handled fairly automatically by pkg when I tell it to install FVWM3, as it very obviously conflicts with FVWM2.

Tuesday, September 1, 2020

Goin High Def

I recently made a significant upgrade to the monitor my primary system uses.  I knew there would be a bit of adjustment to make, but when I unplugged the HDMI cable from the retired Samsung TV and attached it to the new Samsung 4k monitor, everything seemed to be about the same.  There was nothing to adjust, no issues with the display that I could see.  This all changed when I decided to reboot my pc.

There didn't seem to be anything I could do to make my GUI behave the same as it once had, to fill the whole of my new monitor without first having black bars on the left and right, then later it was all simply a horribly bad dpi on a formerly HD monitor.  One of the first things I tried, was in hopes that the solution was simple, that for whatever dumb reason my video card couldn't see the proper screen size and by extension wasn't reporting this to the OS.

My interim solution prior to this was to temporarily power up my old monitor, attach it by HDMI to my pc, then reboot and let the software set things up as they had been.  After X was up on the old monitor, I could plug the HDMI cable into the new display which would then retain the better dpi until a reboot.

I bought a new DisplayPort cable because it has more capability than even my supposedly HD capable HDMI cable which I bought because an older cable began to fail.  I plugged in the new cable, rebooted to get the graphics card to use the proper port, and nothing, things were no better.

The next change was in many ways a fluke, because it was an adjustment I made which had been working just fine so I had no idea that it could be the one detail to begin to get everything working right, finally.  Before this change, I tried variations on two lines for the kldload of the correct driver, first radeon and then amdgpu and back again.  When that was eliminated as the reason (and it was working though still bad resolution etc.) I removed the comments from what ultimately cured nearly everything.

#WITHOUT_DRM_MODULE="YES"
#WITHOUT_DRM2_MODULE="YES"

And now we both see why I am baffled.  I swear I had enabled those two lines which lead to the solution, but to write this blog post I just went to the /etc/rc.conf file to discover them commented out!  Did I not do as I believed I did?  Or maybe somehow something automatically recommented them out?  I have no idea, so I guess I will have to continue with the other issues which I solved and assume that I must have forgot, that the driver was the issue perhaps.

I regretfully do not have any screenshots to show, which would describe the remaining issues.

Nearly everything about firefox was extremely tiny.  Most webpages rendered with what appeared to be maybe an 8px font instead of a more legible 12px.  It took a bit of time to finally stumble upon the solution because we all know how easy it is to find technical answers with google.

What I discovered is that yet again firefox does things itself rather than abide by the host or its environment.  The fix is done by adjusting an about:config setting.  I discovered that mine had been set to .9 which may be default and this could be reason for some oddness in how firefox is different than other browsers.  The setting below seems pretty close to perfect.

layout.css.devPixelsPerPx 1.50

That was the first adjustment for firefox, as it still insisted upon using a second set of mouse cursors and at much larger size than my fvwm desktop UI, which was distracting and annoying.

It seems that at least for the *nix/*bsd world that gtk3 is used by firefox and this is what is overriding the mouse cursor settings.  So to fix this, or get rid of the gtk choice, I edit a file to remove one line.  Edit ~/.config/gtk-3.0/settings.ini to remove the line which defines it:

gtk-cursor-theme-name=whiteglass

So now that my firefox was looking almost normal again, I could work on the remaining GUI issues.  One is to adjust fvwm to have a larger mouse cursor as it is just barely usable size.  I figured out how to make whiteglass mouse cursor theme as an overall default on my desktop as I've always liked its style.  These changes were made for X and fvwm honors them.

Edit ~/.Xdefaults or ~/.Xresources to include lines:

Xcursor.theme: whiteglass
Xcursor.size: 22

My default font size for xterm was also modified by adding the line below to ~/.Xdefaults which may still be a little small but it is much better than what would be.

XTerm*Font:-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1

Frequently viewed this week