mirror of
https://github.com/morgant/mlvwmrc.git
synced 2026-10-22 00:02:32 +00:00
Updated README to better wrap to 80 columns, some Markdown formatting improvements, plus various tweaks to phrasing, warnings, etc.
This commit is contained in:
1 parent
25b1af7df3
commit
263855722c
1 file changed
+260
-109
@@ -3,52 +3,86 @@ by Morgan Aldridge <morgant@makkintosshu.com>
|
||||
|
||||
## OVERVIEW
|
||||
|
||||
This a set of configuration files for Takashi HASEGAWA's [Macintosh-like Virtual Window Manager (MLVWM)](https://github.com/morgant/mlvwm) with the following goals:
|
||||
**mlvwmrc** is a set of configuration files for Takashi HASEGAWA's [Macintosh-
|
||||
like Virtual Window Manager (MLVWM)](https://github.com/morgant/mlvwm) with
|
||||
the following goals:
|
||||
|
||||
- More accurate emulation of [System 7](https://en.wikipedia.org/wiki/System_7) and [MacOS 8](https://en.wikipedia.org/wiki/Mac_OS_8)/9/"Classic" user interfaces
|
||||
- More complete configuration out-of-the-box
|
||||
- Well structured configuration files
|
||||
- Minimal scripting & utilities toward the aforementioned goals
|
||||
* More accurate emulation of [System 7](https://en.wikipedia.org/wiki/System_7)
|
||||
and [MacOS 8](https://en.wikipedia.org/wiki/Mac_OS_8)/9/"Classic" user
|
||||
interfaces
|
||||
* More complete configuration out-of-the-box
|
||||
* Well structured configuration files
|
||||
* Minimal scripting & utilities toward the aforementioned goals
|
||||
|
||||
Unfortunately, MLVWM only includes a couple very rudimentary example rc ([run command](https://en.wikipedia.org/wiki/Run_commands)) files and requires the user to create their own configurations. Worse, since it doesn't automatically generate per-application menu bar, menu, and menu item configurations, the user must take on this extremely tedious process themselves. As it is only a hobbyist research project window manager, no appropriate structure for the rc files (esp. for individual applications), icons (i.e. pixmaps), themes, etc., is provided, making it hard to share and integrate configurations amongst the user base. Last, but not least, I wanted to reduce the amount of configuration needed every time I personally configure MLVWM on my own workstations.
|
||||
Unfortunately, MLVWM only includes very rudimentary rc ([run
|
||||
command](https://en.wikipedia.org/wiki/Run_commands)) file examples, thus
|
||||
requiring the user to create their own configurations. Worse, since it doesn't
|
||||
automatically generate per-application menu bar, menu, and menu item
|
||||
configurations, the user must take on this _extremely tedious_ process
|
||||
themselves. As it is only a hobbyist research project window manager, no
|
||||
appropriate structure for the rc files (esp. for individual applications),
|
||||
icons (i.e. pixmaps), themes, etc., is provided, making it hard to share and
|
||||
integrate configurations amongst the user base.
|
||||
|
||||
Last, but not least, I wanted to reduce the amount of re-configuration needed
|
||||
every time I configure MLVWM on my personal workstations, not to mention for
|
||||
testing and development. _Itch, consider yourself scratched._
|
||||
|
||||
## PREREQUISITES
|
||||
|
||||
To build and install the **mlvwmrc** configuration files and related helper utilities, you will need the following:
|
||||
### Build
|
||||
|
||||
To build and install the **mlvwmrc** configuration files and related helper
|
||||
utilities, you will need the following:
|
||||
|
||||
* `make`:
|
||||
* `rsync`:
|
||||
* `curl`
|
||||
* `unzip`
|
||||
* ImageMagick
|
||||
* `make`
|
||||
* `rsync`
|
||||
* `unzip`
|
||||
|
||||
Post-installation, you will need the following to fully utilize the configuration files and utilities:
|
||||
**NOTE:** _The `make build` target does require an Internet connection to
|
||||
download pixmap and pattern files from various sources for licensing reasons._
|
||||
|
||||
* `mlvwm` (obviously), which requires:
|
||||
* `locale`
|
||||
* `xpm`
|
||||
* `gxmessage`
|
||||
### Run
|
||||
|
||||
Post-installation, you will need the following to fully utilize the
|
||||
configuration files and utilities:
|
||||
|
||||
* `mlvwm` (obviously!)
|
||||
* `xdotool` (for `mlvwm-restart`)
|
||||
* `gxmessage`
|
||||
* [`maim`](https://github.com/naelstrof/maim) & [`slop`](https://github.com/naelstrof/slop) (for `mlvwm-screenshot`)
|
||||
|
||||
## USAGE
|
||||
|
||||
Run `make && make install` to install `.mlvwm/`, `.mlvwmrc`, and `bin/mlvwm-*` in your home directory, including downloading and/or converting appropriate icons.
|
||||
Run `make && make install` to install `.mlvwm/`, `.mlvwmrc`, and `bin/mlvwm-*`
|
||||
in your home directory, including downloading and converting appropriate icons
|
||||
and desktop patterns.
|
||||
|
||||
## TESTING
|
||||
|
||||
It's a good idea to test your `mlvwm` configuration prior to attempting to use it as your default window manager for the first time or after making any changes. The easiest way to do this is using `Xephyr`. I do the following:
|
||||
It is **highly suggested** that you test your `mlvwm` configuration prior to
|
||||
attempting to use it as your default window manager, for the first time _or_
|
||||
after making _any_ changes!
|
||||
|
||||
Xephyr :32 -screen 1024x768 &
|
||||
DISPLAY=:32 mlvwm -debug
|
||||
The easiest way to do this is using `Xephyr`. I do the following:
|
||||
|
||||
The above will run `mlvwm` in a window, so you can test within your existing environment and easily troubleshoot or kill it if something goes wrong.
|
||||
```
|
||||
Xephyr :32 -screen 1024x768 &
|
||||
DISPLAY=:32 mlvwm -debug
|
||||
```
|
||||
|
||||
The above will run `mlvwm` in a window, so you can test within your existing
|
||||
environment and easily troubleshoot or kill it if something goes wrong.
|
||||
|
||||
## SUGGESTED ADDITIONAL CONFIGURATION
|
||||
|
||||
### X Resources
|
||||
|
||||
Some X resources are included for specific applications. For example, there are analog `oclock` & `xclock` resources inspired by the 1995 Apple wristwatch.
|
||||
Some X resources are included for specific applications. For example, there
|
||||
are analog `oclock` & `xclock` resources inspired by the 1995 Apple
|
||||
wristwatch face.
|
||||
|
||||
You can test them until your next logout/login cycle by running:
|
||||
|
||||
@@ -56,14 +90,17 @@ You can test them until your next logout/login cycle by running:
|
||||
xrdb -merge ~/.mlvwm/.Xdefaults
|
||||
```
|
||||
|
||||
If you like what you see, they can be automatically included by adding the following to your own `~/.Xdefaults` file:
|
||||
If you like what you see, they can be automatically included by adding the
|
||||
following to your own `~/.Xdefaults` file:
|
||||
|
||||
```
|
||||
! MLVWM application styles
|
||||
#import ".mlvwm/.Xdefaults"
|
||||
```
|
||||
|
||||
You will also want to confirm that your `~/.Xdefaults` is being loaded/merged in your `~/.xinit` (or `~/.xsession`, on some platforms) file. If it is not, add the following before `mlvwm` is launched:
|
||||
You will also want to confirm that your `~/.Xdefaults` is being loaded/merged
|
||||
in your `~/.xinit` (or `~/.xsession`, on some platforms) file. If it is not,
|
||||
add the following before `mlvwm` is launched:
|
||||
|
||||
```
|
||||
xrdb -merge $HOME/.Xdefaults
|
||||
@@ -71,7 +108,10 @@ xrdb -merge $HOME/.Xdefaults
|
||||
|
||||
### Disable High DPI
|
||||
|
||||
Unfortunately, MLVWM does not support High DPI (a.k.a. HiDPI) resolution scaling, only a traditional 1:1 pixel scaling factor. It's suggested to add the following to your `~/.xinitrx` or `~/.xsession` to disable High DPI in GTK, Qt, and SDL X11 applications:
|
||||
Unfortunately, MLVWM does not support High DPI (a.k.a. HiDPI) resolution
|
||||
scaling, only a traditional 1:1 pixel scaling factor. It's suggested to add
|
||||
the following to your `~/.xinitrx` or `~/.xsession` to disable High DPI in
|
||||
GTK, Qt, and SDL X11 applications:
|
||||
|
||||
```
|
||||
# Disable High DPI for GTK/Qt/SDL X11 applications
|
||||
@@ -89,25 +129,39 @@ For further details on High DPI in X11 applications, see:
|
||||
* [Qt 6.9: Graphics > High DPI (Environment Variable Reference)](https://doc.qt.io/qt-6/highdpi.html#environment-variable-reference)
|
||||
* [Qt 5.15: High DPI Displays (High DPI Support in Qt)](https://qthub.com/static/doc/qt5/qtdoc/highdpi.html#high-dpi-support-in-qt)
|
||||
* [SDL2: FAQ - Using SDL (What environment variables are used by SDL?)](https://wiki.libsdl.org/SDL2/FAQUsingSDL#what_environment_variables_are_used_by_sdl)
|
||||
* [SDL2 `SDL_hints.h`](https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_hints.h) (see `SDL_HINT_VIDEO_HIGHDPI_DISABLED`)
|
||||
* [SDL2 `SDL_hints.h`](https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_hints.h)
|
||||
(see `SDL_HINT_VIDEO_HIGHDPI_DISABLED`)
|
||||
* [SDL3: FAQ - Using SDL3 (What environment variables are used by SDL?)](https://wiki.libsdl.org/SDL3/FAQUsingSDL)
|
||||
* [SDL3: Environment Variables](https://wiki.libsdl.org/SDL3/EnvironmentVariables)
|
||||
* [`SDL_HINT_VIDEO_X11_SCALING_FACTOR`](https://wiki.libsdl.org/SDL3/SDL_HINT_VIDEO_X11_SCALING_FACTOR)
|
||||
* [SDL3 `SDL_hints.h`](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_hints.h) (see `SDL_HINT_VIDEO_X11_SCALING_FACTOR`)
|
||||
* [SDL3 `SDL_hints.h`](https://github.com/libsdl-org/SDL/blob/main/include/SDL3/SDL_hints.h)
|
||||
(see `SDL_HINT_VIDEO_X11_SCALING_FACTOR`)
|
||||
|
||||
### GTK+ 3
|
||||
|
||||
There are several default settings which can be changed to make GTK applications function more like they did under Mac OS. They can be applied to your `~/.config/gtk-3.0/settings.ini`, but please back it up first!
|
||||
There are several default settings which can be changed to make GTK
|
||||
applications function more like they did under Mac OS. They can be applied to
|
||||
your `~/.config/gtk-3.0/settings.ini`, but _please_ **back it up first!**
|
||||
|
||||
Additional settings can be found in the [Gtk.Settings](https://docs.gtk.org/gtk3/class.Settings.html) documentation. Unfortunately, many depricated settings no longer have any effect in GTK 3.x and are listed as "This setting is ignored."
|
||||
Additional settings can be found in the [Gtk.Settings](https://docs.gtk.org/gtk3/class.Settings.html)
|
||||
documentation. Unfortunately, many depricated settings no longer have any
|
||||
effect in GTK 3.x and are listed as "This setting is ignored."
|
||||
|
||||
**NOTE:** _Changes to `settings.ini` are only loaded into individual applications when they are launched, so you should quit and restart any GTK applications running when updates were saved._
|
||||
**NOTE:** _Changes to `settings.ini` are only loaded into individual
|
||||
applications when they are launched, so you should quit and restart any GTK
|
||||
applications running when updates were saved._
|
||||
|
||||
#### Disable Client-Side Decorations (CSD)
|
||||
|
||||
Some of the included configurations are for GTK+ 3 applications which use [client-side decorations (CSD)](https://en.wikipedia.org/wiki/Client-side_decoration), resulting in window controls being included in the "header bar". These window controls already exist in the `mlvwm` window title bars, so are redundant, look out of place, and take up valuable screen real estate.
|
||||
Some of the included configurations are for GTK+ 3 applications which use
|
||||
[client-side decorations (CSD)](https://en.wikipedia.org/wiki/Client-side_decoration),
|
||||
resulting in window controls being included in the "header bar". These window
|
||||
controls already exist in the `mlvwm` window title bars, so are redundant,
|
||||
look out of place, and take up valuable screen real estate.
|
||||
|
||||
To disable client-side decorations, set `gtk-decoration-layout` to a blank string (or [customize](https://docs.gtk.org/gtk3/property.Settings.gtk-decoration-layout.html) as you see fit), for example:
|
||||
To disable client-side decorations, set `gtk-decoration-layout` to a blank
|
||||
string (or [customize](https://docs.gtk.org/gtk3/property.Settings.gtk-decoration-layout.html)
|
||||
as you see fit), for example:
|
||||
|
||||
```
|
||||
\[Settings\]
|
||||
@@ -116,7 +170,10 @@ gtk-decoration-layout = ""
|
||||
|
||||
#### Always Show Scroll Bars
|
||||
|
||||
By default, GTK 3 applications hide the scroll bars in windows with scroll bars unless there is mouse activity in the window. You can force all GTK applications to always show their scroll bars by setting [`gtk-overlay-scrolling`](https://docs.gtk.org/gtk3/property.Settings.gtk-overlay-scrolling.html) to `false`, for example:
|
||||
By default, GTK 3 applications hide scroll bars unless there is active cursor
|
||||
or scroll gesture activity in the window. You can force all GTK applications
|
||||
to _always_ show their scroll bars by setting [`gtk-overlay-scrolling`](https://docs.gtk.org/gtk3/property.Settings.gtk-overlay-scrolling.html)
|
||||
to `false`, for example:
|
||||
|
||||
```
|
||||
\[Settings\]
|
||||
@@ -125,7 +182,12 @@ gtk-overlay-scrolling = false
|
||||
|
||||
#### Change Scroll Bar & Slider Behavior
|
||||
|
||||
By default, scroll bars and sliders in GTK 3 applications will, when clicked on, move the scroll/slider handle _to the point clicked_ instead of moving the handle by an amount _toward the point clicked_ (equivalent to clicking on the arrow buttons in the scroll bar). You can reverse this behavior by setting [`gtk-primary-button-warps-slider`](https://docs.gtk.org/gtk3/property.Settings.gtk-primary-button-warps-slider.html) to `false`, for example:
|
||||
By default, scroll bars and sliders in GTK 3 applications will, when clicked
|
||||
on, move the scroll/slider handle _to the point clicked_ instead of moving the
|
||||
handle by an amount _toward the point clicked_ (equivalent to clicking on the
|
||||
arrow buttons in the scroll bar). You can reverse this behavior by setting
|
||||
[`gtk-primary-button-warps-slider`](https://docs.gtk.org/gtk3/property.Settings.gtk-primary-button-warps-slider.html)
|
||||
to `false`, for example:
|
||||
|
||||
```
|
||||
\[Settings\]
|
||||
@@ -136,13 +198,19 @@ gtk-primary-button-warps-slider = false
|
||||
|
||||
#### Don't Use Full Screen Mode in SDL Applications
|
||||
|
||||
Fullscreen windows, especially those for SDL applications (especially games) are not currently supported by MLVWM. So, you should configure your applications not to use them.
|
||||
Full screen windows, especially those for SDL applications (primarily games,
|
||||
but not exclusively) are not currently supported by MLVWM. So, you should
|
||||
configure your applications to always use windowed mode.
|
||||
|
||||
Unfortunately, a many (most?) games launch in full screen mode, so check for command line options which launch in windowed mode. Implementation varies from game to game.
|
||||
Unfortunately, many (most?) games launch in full screen mode, so check for
|
||||
command line options which launch in windowed mode. Implementation varies from
|
||||
game to game.
|
||||
|
||||
#### Work Around 'BadMatch' Errors for 'X_SetInputFocus' Requests
|
||||
|
||||
Are you experiencing intermittent and/or frequent X `BadMatch (invalid parameter attributes)` errors for requests with `X_SetInputFocus` when running SDL applications (especially games), such as the following?
|
||||
Are you experiencing intermittent and/or frequent X `BadMatch (invalid
|
||||
parameter attributes)` errors for requests with `X_SetInputFocus` when running
|
||||
SDL applications (especially games), such as the following?
|
||||
|
||||
```
|
||||
X Error of failed request: BadMatch (invalid parameter attributes)
|
||||
@@ -151,7 +219,10 @@ X Error of failed request: BadMatch (invalid parameter attributes)
|
||||
Current serial number in output stream: 2375
|
||||
```
|
||||
|
||||
If so, this can be worked around by setting the `SDL_X11_FORCE_OVERRIDE_REDIRECT` environment variable. This environment variable is described in [`include/SDL_hints.h`](https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_hints.h) thusly:
|
||||
If so, this can be worked around by setting the `SDL_X11_FORCE_OVERRIDE_REDIRECT`
|
||||
environment variable. This environment variable is described in
|
||||
[`include/SDL_hints.h`](https://github.com/libsdl-org/SDL/blob/SDL2/include/SDL_hints.h)
|
||||
thusly:
|
||||
|
||||
```
|
||||
/**
|
||||
@@ -167,16 +238,24 @@ If so, this can be worked around by setting the `SDL_X11_FORCE_OVERRIDE_REDIRECT
|
||||
#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT"
|
||||
```
|
||||
|
||||
As described, this will cause the SDL application's window(s) to not be handled by `mlvwm` at all!
|
||||
As described, this will cause the SDL application's window(s) to _not be
|
||||
handled by `mlvwm` at all_!
|
||||
|
||||
With that in mind, the suggested use with `mlvwm` and/or `mlvwmrc` is as follows, highest priority to lowest:
|
||||
With that in mind, the suggested use with `mlvwm` and/or `mlvwmrc` is as
|
||||
follows, highest priority to lowest:
|
||||
|
||||
1. Avoid using this workaround if at all possible!
|
||||
2. Try launching the application from a terminal, first executing `export SDL_X11_FORCE_OVERRIDE_REDIRECT=1` and then the application itself
|
||||
3. Write a wrapper script for the application which automatically sets the `SDL_X11_FORCE_OVERRIDE_REDIRECT=1` environment variable (see Step 2)
|
||||
4. If the problem occurs frequently for _all SDL-based applications_, set the `SDL_X11_FORCE_OVERRIDE_REDIRECT=1` environment variable in your `~/.xinit` (or `~/.xsession`, if appropriate)
|
||||
2. Try launching the application from a terminal, first executing
|
||||
`export SDL_X11_FORCE_OVERRIDE_REDIRECT=1` and then the application itself
|
||||
3. Write a wrapper script for the application which automatically sets the
|
||||
`SDL_X11_FORCE_OVERRIDE_REDIRECT=1` environment variable (see Step 2)
|
||||
4. If the problem occurs frequently for _all SDL-based applications_, set the
|
||||
`SDL_X11_FORCE_OVERRIDE_REDIRECT=1` environment variable in your
|
||||
`~/.xinit` (or `~/.xsession`, if appropriate)
|
||||
|
||||
If you find you need to globally set `SDL_X11_FORCE_OVERRIDE_REDIRECT`, you may want to also set `SDL_GRAB_KEYBOARD`. In that case, you'd want to add the following to your `~/.xinit` or `~/.xsession`:
|
||||
If you find you need to globally set `SDL_X11_FORCE_OVERRIDE_REDIRECT`, you
|
||||
may want to also set `SDL_GRAB_KEYBOARD`. In that case, you'd want to add the
|
||||
following to your `~/.xinit` or `~/.xsession`:
|
||||
|
||||
```
|
||||
# Workaround for SDL2 X11 BadMatch/X_SetInputFocus errors
|
||||
@@ -184,18 +263,22 @@ export SDL_X11_FORCE_OVERRIDE_REDIRECT=1
|
||||
export SDL_GRAB_KEYBOARD=1
|
||||
```
|
||||
|
||||
**NOTE**: _The above will prevent MLVWM global keyboard shortcuts from functioning, so you'll be unlikely to switch applications._
|
||||
**NOTE**: _The above will prevent MLVWM global keyboard shortcuts from
|
||||
functioning, so you'll likely be unable to switch applications and such._
|
||||
|
||||
##### Further Reading
|
||||
|
||||
* [SDL2 FAQ: Using SDL](https://wiki.libsdl.org/SDL2/FAQUsingSDL), especially:
|
||||
* [What environment variables are used by SDL?](https://wiki.libsdl.org/SDL2/FAQUsingSDL#what_environment_variables_are_used_by_sdl)
|
||||
* [SDL3 FAQ: Using SDL3](https://wiki.libsdl.org/SDL3/FAQUsingSDL), especially:
|
||||
* [SDL3 FAQ: Using SDL3](https://wiki.libsdl.org/SDL3/FAQUsingSDL),
|
||||
especially:
|
||||
* [SDL3 Environment Variables](https://wiki.libsdl.org/SDL3/EnvironmentVariables)
|
||||
|
||||
### iDesk
|
||||
|
||||
Companion [iDesk](https://idesk.sourceforge.net/) configuration files are available via the [mlvwmrc-ideskrc](https://github.com/morgant/mlvwmrc-ideskrc) project.
|
||||
Companion [iDesk](https://idesk.sourceforge.net/) configuration files are
|
||||
available via the [mlvwmrc-ideskrc](https://github.com/morgant/mlvwmrc-ideskrc)
|
||||
project.
|
||||
|
||||
## APPLICATIONS
|
||||
|
||||
@@ -246,11 +329,14 @@ Configurations for the following X11 applications are included:
|
||||
|
||||
## MENU EXTRAS
|
||||
|
||||
MLVWM supports "swallowing" X11 application windows into the menu bar, much like "Menu Extras" in macOS (née OS X; née Mac OS X). It is suggested to keep these windows to a 16x16 icon size, but larger horizontal widths can work.
|
||||
MLVWM supports 'swallowing' X11 application windows into the menu bar, much
|
||||
like "Menu Extras" in macOS (née OS X; née Mac OS X). It is suggested to keep
|
||||
these windows to a 16x16 icon size, but larger horizontal widths can work.
|
||||
|
||||
### INCLUDED
|
||||
|
||||
Configurations for the following X11 applications are included for use "swallowed" into the menu bar:
|
||||
Configurations for the following X11 applications are included for use
|
||||
'swallowed' into the menu bar:
|
||||
|
||||
* [Gromit-MPX](https://github.com/bk138/gromit-mpx)
|
||||
* [mlclock](https://github.com/morgant/mlclock)
|
||||
@@ -262,32 +348,45 @@ Configurations for the following X11 applications are included for use "swallowe
|
||||
|
||||
### THIRD PARTY
|
||||
|
||||
Configurations for additional, optional, applications & utilities to be "swallowed" into the menu bar are available from the following separate projects:
|
||||
Configurations for additional, optional, applications and utilities to be
|
||||
'swallowed' into the menu bar are available from the following separate
|
||||
projects:
|
||||
|
||||
* [ffssb2mlvwmrc](https://github.com/morgant/ffssb2mlvwmrc)
|
||||
* [Xosview2 mini graphs](https://github.com/morgant/mlvwmrc-xosview2)
|
||||
* [x11vnc Menu Extra](https://github.com/morgant/mlvwmrc-x11vnc)
|
||||
* [xpomodmenu](https://github.com/morgant/xpomodmenu) ([xpomod](https://github.com/phillbush/xpomod) Pomodoro Menu Extra)
|
||||
* [xpomodmenu](https://github.com/morgant/xpomodmenu)
|
||||
([xpomod](https://github.com/phillbush/xpomod) Pomodoro Menu Extra)
|
||||
* [OpenBSD](https://www.openbsd.org/)-specific:
|
||||
* [APM (Advanced Power Management)](https://github.com/morgant/mlvwmrc-openbsd-apm)
|
||||
* [xsndiomenu](https://github.com/morgant/xsndiomenu)
|
||||
|
||||
### SYSTEM TRAY
|
||||
|
||||
MLVWM doesn't natively support the [System Tray Protocol](https://www.freedesktop.org/wiki/Specifications/systemtray-spec/), but standalone X11 system tray applications such as the following _can_ be swallowed into the menu bar. Unfortunately, we don't currently include configurations for these, so you'll have configure them yourself:
|
||||
MLVWM doesn't natively support the [System Tray Protocol](https://www.freedesktop.org/wiki/Specifications/systemtray-spec/),
|
||||
but standalone X11 system tray applications such as the following _can_ be
|
||||
swallowed into the menu bar. Unfortunately, we don't currently include
|
||||
configurations for these, so you'll have configure them yourself:
|
||||
|
||||
**IMPORTANT:** MLVWM currently has some [overdraw rendering issues when X11 applications which resize themselves are swallowed into the menu bar](https://github.com/morgant/mlvwm/issues/36), so you'll want to configure a fixed-size system tray.
|
||||
**IMPORTANT:** MLVWM currently has some [overdraw rendering issues when X11
|
||||
applications which resize themselves are swallowed into the menu
|
||||
bar](https://github.com/morgant/mlvwm/issues/36), so you'll want to configure
|
||||
a fixed-size system tray.
|
||||
|
||||
* [stalonetray](https://kolbusa.github.io/stalonetray/)
|
||||
* [trayer](https://github.com/sargon/trayer-srg)
|
||||
|
||||
## MLVWM-SPECIFIC UTILITY SCRIPTS
|
||||
|
||||
A few `mlvwm`-specific scripts are included and installed in `~/bin/`. You should ensure that this directory is in your user's `PATH` environment variable.
|
||||
A few `mlvwm`-specific scripts are included and installed in `~/bin/`. You
|
||||
should ensure that this directory is in your user's `PATH` environment
|
||||
variable.
|
||||
|
||||
### mlvwm-message
|
||||
|
||||
`mlvwm-message` is a wrapper around `gxmessage` and `xmessage` (both of which accept the same options), so that other `mlvwm`-specific scripts can use the former, if available, or fall back to the latter.
|
||||
`mlvwm-message` is a wrapper around `gxmessage` and `xmessage` (both of which
|
||||
accept the same options), so that other `mlvwm`-specific scripts can use the
|
||||
former, if available, or fall back to the latter.
|
||||
|
||||
Usage:
|
||||
|
||||
@@ -303,7 +402,9 @@ mlvwm-message -title "Yo" -buttons "Goodbye:1,Hello:2" -default "Hello" "Hello,
|
||||
|
||||
### mlvwm-alert
|
||||
|
||||
`mlvwm-alert` is a wrapper around `mlvwm-message` which displays an alert-style dialog with the provided title, message, and with a single "OK" button to dismiss it.
|
||||
`mlvwm-alert` is a wrapper around `mlvwm-message` which displays an alert-
|
||||
style dialog with the provided title, message, and with a single "OK" button
|
||||
to dismiss it.
|
||||
|
||||
Usage:
|
||||
|
||||
@@ -319,7 +420,10 @@ mlvwm-alert "WARNING!" "This message will self destruct..."
|
||||
|
||||
### mlvwm-confirm
|
||||
|
||||
`mlvwm-confirm` is a wrapper around `mlvwm-message` which displays a confirmation-style dialog with the provided title, message, and with two buttons to dismiss it: "OK" to confirm (exit status `0`) and "Cancel" to deny (exit status `1`).
|
||||
`mlvwm-confirm` is a wrapper around `mlvwm-message` which displays a
|
||||
confirmation-style dialog with the provided title, message, and with two
|
||||
buttons to dismiss it: "OK" to confirm (exit status `0`) and "Cancel" to deny
|
||||
(exit status `1`).
|
||||
|
||||
Usage:
|
||||
|
||||
@@ -335,9 +439,14 @@ mlvwm-confirm "Shut Down" "Are you sure you want to shut down your computer now?
|
||||
|
||||
### mlvwm-powerdown
|
||||
|
||||
`mlvwm-powerdown` is a wrapper around OS-specific commands to suspend/sleep, reboot/restart, or shut/power down the computer. It accepts a single option, either `-s` for suspend/sleep, `-r` for reboot/restart, or `-p` for power/shut down. For the `-r` & `-p` options, it utilizes `mlvwm-confirm` to prompt for confirmation before restarting or shutting down the computer.
|
||||
`mlvwm-powerdown` is a wrapper around OS-specific commands to suspend/sleep,
|
||||
reboot/restart, or shut/power down the computer. It accepts a single option,
|
||||
either `-s` for suspend/sleep, `-r` for reboot/restart, or `-p` for power/shut
|
||||
down. For the `-r` & `-p` options, it utilizes `mlvwm-confirm` to prompt for
|
||||
confirmation before restarting or shutting down the computer.
|
||||
|
||||
This is primarily used to implement "Sleep", "Restart", and "Shutdown" menu items in the default "Special" menu.
|
||||
This is primarily used to implement "Sleep", "Restart", and "Shutdown" menu
|
||||
items in the default "Special" menu.
|
||||
|
||||
Usage:
|
||||
|
||||
@@ -353,7 +462,10 @@ mlvwm-powerdown -p
|
||||
|
||||
### mlvwm-restart
|
||||
|
||||
`mlvwm-restart`, unlike `mlvwm-powerdown`, is unrelated to the power state of the computer and is instead used to relaunch `mlvwm`, reloading configurations. It requires `xdotool` to trigger a special keyboard shortcut which is specified in the default configuration.
|
||||
`mlvwm-restart`, unlike `mlvwm-powerdown`, is unrelated to the power state of
|
||||
the computer and is instead used to relaunch `mlvwm`, reloading
|
||||
configurations. It requires `xdotool` to trigger a special keyboard shortcut
|
||||
which is specified in the default configuration.
|
||||
|
||||
Usage:
|
||||
|
||||
@@ -363,9 +475,13 @@ mlvwm-restart
|
||||
|
||||
### mlvwm-screenshot
|
||||
|
||||
`mlvwm-screenshot` is a wrapper around `maim` which saves a date & time stamped PNG screenshot of the screen in the user's `~/Pictures/` directory. Optionally, by specifying the `-s` option, it will allow the user to select an area of the screen to be captured instead of the entire screen.
|
||||
`mlvwm-screenshot` is a wrapper around `maim` which saves a date & time-
|
||||
stamped PNG screenshot of the screen in the user's `~/Pictures/` directory.
|
||||
Optionally, by specifying the `-s` option, it will allow the user to select an
|
||||
area of the screen to be captured instead of the entire screen.
|
||||
|
||||
This is primarily used to implement the screenshots via keyboard shortcuts in the default configuration.
|
||||
This is primarily used to implement the screenshots via keyboard shortcuts in
|
||||
the default configuration.
|
||||
|
||||
Usage:
|
||||
|
||||
@@ -381,65 +497,82 @@ mlvwm-screenshot -s
|
||||
|
||||
## DATA STRUCTURE
|
||||
|
||||
MLVWM loads its configuration from `~/.mlvwmrc`, but to break configuration up into more logical and manageable chunks within a `~/.mlvwm/` directory. That directory contains its own `.mlvwmrc` file which `~/.mlvwmrc` gets symlinked to, and it takes advantage of the `Read` command (see [mlvwm/CONFIGURATION](https://github.com/morgant/mlvwm/blob/master/CONFIGURATION)) to import the remaining configuration files.
|
||||
MLVWM loads its configuration from `~/.mlvwmrc`, but to break configuration up
|
||||
into more logical and manageable chunks within a `~/.mlvwm/` directory. That
|
||||
directory contains its own `.mlvwmrc` file which `~/.mlvwmrc` gets symlinked
|
||||
to, and it takes advantage of the `Read` command (see
|
||||
[mlvwm/CONFIGURATION](https://github.com/morgant/mlvwm/blob/master/CONFIGURATION))
|
||||
to import the remaining configuration files.
|
||||
|
||||
The current structure is:
|
||||
|
||||
~/
|
||||
.mlvwmrc -> .mlvwm/.mlvwmrc
|
||||
.mlvwm/
|
||||
.mlvwmrc
|
||||
.initrc
|
||||
.restartrc
|
||||
.Xdefaults
|
||||
MenuBar
|
||||
VirtualDesktops
|
||||
theme/
|
||||
System7
|
||||
MacOS8
|
||||
MacOS9
|
||||
MenuExtras/
|
||||
xload
|
||||
…
|
||||
apps/
|
||||
.AppManifest
|
||||
Xterm
|
||||
Xcalc
|
||||
…
|
||||
pixmap/
|
||||
*.xpm
|
||||
Xresources/
|
||||
xclock
|
||||
…
|
||||
bin/
|
||||
mlvwm-alert
|
||||
mlvwm-confirm
|
||||
mlvwm-message
|
||||
mlvwm-powerdown
|
||||
mlvwm-restart
|
||||
mlvwm-screenshot
|
||||
```
|
||||
~/
|
||||
.mlvwmrc -> .mlvwm/.mlvwmrc
|
||||
.mlvwm/
|
||||
.mlvwmrc
|
||||
.initrc
|
||||
.restartrc
|
||||
.Xdefaults
|
||||
MenuBar
|
||||
VirtualDesktops
|
||||
theme/
|
||||
System7
|
||||
MacOS8
|
||||
MacOS9
|
||||
MenuExtras/
|
||||
xload
|
||||
…
|
||||
apps/
|
||||
.AppManifest
|
||||
Xterm
|
||||
Xcalc
|
||||
…
|
||||
pixmap/
|
||||
*.xpm
|
||||
Xresources/
|
||||
xclock
|
||||
…
|
||||
bin/
|
||||
mlvwm-alert
|
||||
mlvwm-confirm
|
||||
mlvwm-message
|
||||
mlvwm-powerdown
|
||||
mlvwm-restart
|
||||
mlvwm-screenshot
|
||||
```
|
||||
|
||||
### .mlvwmrc
|
||||
|
||||
The main `rc` file. It contains some important configuration settings & commands, esp. `IconPath`, but primarily loads other `rc` & configuration files. The active theme can be changed by editing the `Read .mlvwm/theme/System7` line to one of the other theme files.
|
||||
The main `rc` file. It contains some important configuration settings and
|
||||
commands, especially `IconPath`, but primarily loads other `rc` and
|
||||
configuration files. The active theme can be changed by editing the
|
||||
`Read .mlvwm/theme/System7` line to one of the other theme files.
|
||||
|
||||
### .initrc
|
||||
|
||||
Contains an `InitFunction` block which can be modified to run commands upon initialization of MLVWM.
|
||||
Contains an `InitFunction` block which can be modified to run commands upon
|
||||
initialization of MLVWM.
|
||||
|
||||
### .restartrc
|
||||
|
||||
Contains a `RestartFunction` block which can be modified to run commands upon init or reload of MLVWM.
|
||||
Contains a `RestartFunction` block which can be modified to run commands upon
|
||||
init or reload of MLVWM.
|
||||
|
||||
### .Xdefaults
|
||||
|
||||
Contains default X(7) resources, mostly `#include` lines which import individual application-specific X resources configurations found in `.mlvwm/Xresources/`. It simplifies the inclusion of all mlvwmrc X resources at once as the user can edit their own `~/.Xdefaults` to append the following line:
|
||||
Contains default X(7) resources, mostly `#include` lines which import
|
||||
individual application-specific X resources configurations found in
|
||||
`.mlvwm/Xresources/`. It simplifies the inclusion of all mlvwmrc X resources
|
||||
at once as the user can edit their own `~/.Xdefaults` to append the following
|
||||
line:
|
||||
|
||||
```
|
||||
#import ".mlvwm/.Xdefaults"
|
||||
```
|
||||
|
||||
Alternatively, once can manually merge them with their own configuration by running the following:
|
||||
Alternatively, once can manually merge them with their own configuration by
|
||||
running the following:
|
||||
|
||||
```
|
||||
xrdb -merge "$HOME/.mlvwm/.Xdefaults"
|
||||
@@ -447,31 +580,49 @@ xrdb -merge "$HOME/.mlvwm/.Xdefaults"
|
||||
|
||||
### VirtualDesktops
|
||||
|
||||
Contains configuration settings for virtual desktops, incl. the number of virtual desktops (default is 1.)
|
||||
Contains configuration settings for virtual desktops, including the number of
|
||||
virtual desktops (default is `1`.)
|
||||
|
||||
### MenuBar
|
||||
|
||||
Contains the default menu bar configuration, including loading Menu Extras. If you want to enable/disable specific MenuExtras, this is currently the place to do it.
|
||||
Contains the default menu bar configuration, including loading Menu Extras. If
|
||||
you want to enable/disable specific MenuExtras, this is currently the place
|
||||
to do it.
|
||||
|
||||
*Important*: the Apple menu is actually defined in the theme files as some theme-specific settings need to be applied during creation, incl. icons. For this reason, the theme files _must_ be loaded _before_ the default menu bar in `.mlvwmrc`.
|
||||
**Important**: _The Apple menu is actually defined in the theme files as some
|
||||
theme-specific settings need to be applied during creation, including icons.
|
||||
For this reason, the theme files **must** be loaded _before_ the default menu
|
||||
bar in `.mlvwmrc`.
|
||||
|
||||
### .AppManifest
|
||||
|
||||
Includes a `Read` command for each application-specific file in the `apps` directory. This is primarily to limit the complexity of the main `.mlvwmrc` file.
|
||||
Includes a `Read` command for each application-specific file in the `apps`
|
||||
directory. This is primarily to limit the complexity of the main `.mlvwmrc`
|
||||
file.
|
||||
|
||||
### CONTRIBUTING
|
||||
|
||||
I very much welcome requests, feedback, and improvements. Please see [CONTRIBUTING](CONTRIBUTING.md) for details as to how to contribute, as well as the style guide for mlvwmrc configuration files.
|
||||
I very much welcome requests, feedback, and improvements. Please see
|
||||
[CONTRIBUTING](CONTRIBUTING.md) for details as to how to contribute, as well
|
||||
as the style guide for mlvwmrc configuration files.
|
||||
|
||||
## SPECIAL THANKS
|
||||
|
||||
Many thanks to Takashi Hasegawa for creating [MLVWM](http://www2u.biglobe.ne.jp/~y-miyata/mlvwm.html) and Steffen Beyer for providing [Apple/Mac icons in .xpm format](http://web.archive.org/web/20191118161417/http://sb.fluomedia.org/macintosh/).
|
||||
Many thanks to Takashi Hasegawa for creating [MLVWM](http://www2u.biglobe.ne.jp/~y-miyata/mlvwm.html)
|
||||
and Steffen Beyer for providing [Apple/Mac icons in .xpm
|
||||
format](http://web.archive.org/web/20191118161417/http://sb.fluomedia.org/macintosh/).
|
||||
|
||||
## LICENSE
|
||||
|
||||
_TBD_
|
||||
|
||||
Some icons included in this repository fall under the licenses and/or copyrights of their respective projects, companies, organizations, or individuals, including:
|
||||
Some icons included in this repository fall under the licenses and/or
|
||||
copyrights of their respective projects, companies, organizations, or
|
||||
individuals, including:
|
||||
|
||||
* The Apple logo, Finder, Balloon Help, and pencil icons are copyright Apple, Inc. (née Apple Computer, Inc.) and are included for private, non-commercial use only
|
||||
* The [Xosview icon](https://www.iconfinder.com/icons/9548/xosview_icon) by Oxygen Team is licensed under [Creative Commons Attribution-NonCommercial-NoDerivs 2.5 Generic License](https://creativecommons.org/licenses/by-nc-nd/2.5/)
|
||||
* The Apple logo, Finder, Balloon Help, and pencil icons are copyright Apple,
|
||||
Inc. (née Apple Computer, Inc.) and are included for private, non-
|
||||
commercial use only
|
||||
* The [Xosview icon](https://www.iconfinder.com/icons/9548/xosview_icon) by
|
||||
Oxygen Team is licensed under [Creative Commons Attribution-NonCommercial-
|
||||
NoDerivs 2.5 Generic License](https://creativecommons.org/licenses/by-nc-nd/2.5/)
|
||||
Reference in new issue
Block a user