IceWM: Difference between revisions

From ArchWiki
(→‎Installation: Remove link to outdated and removed package.)
 
(7 intermediate revisions by 4 users not shown)
Line 13: Line 13:
[[Install]] the {{Pkg|icewm}} package.
[[Install]] the {{Pkg|icewm}} package.


[[Install]] the {{AUR|icewm-git}} package for the [https://github.com/bbidulock/icewm development version].
Install the {{AUR|icewm-git}} package for the [https://github.com/bbidulock/icewm development version].


== Starting ==
== Starting ==
Line 23: Line 23:
== Configuration ==
== Configuration ==


Although IceWM configuration is originally text-based, there are GUI-based tools available, notably {{AUR|icewm-utils}} in the [[AUR]]. However these tools are relatively old and most users prefer to simply edit the text configuration files. Configuration changes from defaults can be made either system wide (in {{ic|/etc/icewm/}}) or on a user-specific basis (in {{ic|~/.icewm/}}).
Although IceWM configuration is originally text-based, there are GUI tools available, notably {{AUR|icewm-utils}}. However, these tools are relatively old and most users prefer to edit the text configuration files. Configuration changes from the defaults can be made either system wide (in {{ic|/etc/icewm/}}) or on a user-specific basis (in {{ic|~/.config/icewm/}}).


To change your icewm configuration from the default, simply copy the default configuration files from {{ic|/usr/share/icewm/}} to {{ic|~/.icewm/}}, for example:
To change your icewm configuration from the default, copy the default configuration files from {{ic|/usr/share/icewm/}} to {{ic|~/.config/icewm/}}, for example:


  $ cp -r /usr/share/icewm/ ~/.icewm/
  $ cp -r /usr/share/icewm/ ~/.config/icewm/


*{{ic|preferences}} is the core configuration file for IceWM.
*{{ic|preferences}} is the core configuration file for IceWM.
Line 38: Line 38:
*{{ic|shutdown}} the same for shutdown.
*{{ic|shutdown}} the same for shutdown.


=== Autostarting ===
=== Autostart ===


The {{ic|startup}} script is '''not''' provided by the {{Pkg|icewm}} package so you will need to [[create]] it yourself, add the commands for the programs that you wish to start with the IceWM session and make it [[executable]].  
The {{ic|startup}} script is '''not''' provided by the {{Pkg|icewm}} package so you will need to [[create]] it yourself, add the commands for the programs that you wish to start with the IceWM session and make it [[executable]].  
Line 44: Line 44:
{{Note|Startup commands that install system tray applets must be preceded by {{ic|sleep 1 &&}}, otherwise IceWM will create an ugly black window that will prevent it from quitting; in that case, use xkill on the task bar.}}
{{Note|Startup commands that install system tray applets must be preceded by {{ic|sleep 1 &&}}, otherwise IceWM will create an ugly black window that will prevent it from quitting; in that case, use xkill on the task bar.}}


Below is an example of an IceWM startup script which starts {{Pkg|network-manager-applet}} and [[XScreenSaver]] with the IceWM session:
Below is an example of an IceWM startup script which starts {{Pkg|network-manager-applet}} and [[XScreenSaver]] within the IceWM session:


{{hc|~/.icewm/startup|
{{hc|~/.config/icewm/startup|
#!/bin/sh
#!/bin/sh


Line 55: Line 55:
# enable bluetooth applet
# enable bluetooth applet
     sleep 1 &&
     sleep 1 &&
     blueman-applet &!
     blueman-applet &


# enable screensaver
# enable screensaver
Line 73: Line 73:
=== Generating menu entries ===
=== Generating menu entries ===


* {{Pkg|menumaker}} from the official repositories is a Python script that automatically populates your applications menu based on what is installed in your system. Although this may result in a menu filled with many unwanted applications, it may still be preferable to manually editing the menu configuration file. When running MenuMaker, use the -f flag to overwrite an existing menu file:
{{Pkg|menumaker}} from the official repositories is a Python script that automatically populates your applications menu based on what is installed in your system. Although this may result in a menu filled with many unwanted applications, it may still be preferable to manually editing the menu configuration file. When running MenuMaker, use the -f flag to overwrite an existing menu file:


  $ mmaker -f icewm
  $ mmaker -f icewm
Line 81: Line 81:
  $ mmaker -f --no-legacy --no-debian icewm
  $ mmaker -f --no-legacy --no-debian icewm


* Alternatively, you can generate a menu using [[Xdg-menu]]. See the [[Xdg-menu#IceWM]] section.
Alternatively, you can generate a menu using [[xdg-menu]]. See the [[xdg-menu#IceWM]] section.


=== Themes ===
=== Themes ===
Line 89: Line 89:
=== Desktop icons ===
=== Desktop icons ===


A file manager such as [[PCManFM]] or {{Pkg|rox}} can manage the wallpaper and add desktop icons. Alternatively, you could install [[Idesk]], a small program that can also add icons to the desktop.
A file manager such as [[PCManFM]] or {{AUR|rox}} can manage the wallpaper and add desktop icons. Alternatively, you could install [[Idesk]], a small program that can also add icons to the desktop.


== Tips and tricks ==
== Tips and tricks ==
Line 105: Line 105:
=== Unable to logout when PCManFM is managing the desktop ===
=== Unable to logout when PCManFM is managing the desktop ===


If you use [[PCManFM]] to manage the desktop you may find that the IceWM logout button no longer works. As a workaround, you can define a logout command. This should allow you to logout whilst PCManFM is managing the desktop. To do this, open {{ic|~/.icewm/preferences}}, uncomment the following line: {{ic|<nowiki># LogoutCommand=""</nowiki>}} and enter a command which can be used to logout. For example: {{ic|<nowiki>LogoutCommand="pkill -u username"</nowiki>}} where username is your username.
If you use [[PCManFM]] to manage the desktop you may find that the IceWM logout button no longer works. As a workaround, you can define a logout command. This should allow you to logout whilst PCManFM is managing the desktop. To do this, uncomment {{ic|LogoutCommand}}:
 
{{hc|~/.config/icewm/preferences|2=
LogoutCommand="pkill -u ''username''"
}}


=== No shutdown or reboot options in logout menu ===
=== No shutdown or reboot options in logout menu ===
Line 118: Line 122:


* [https://ice-wm.org/ Official IceWM website]
* [https://ice-wm.org/ Official IceWM website]
* [https://www.osnews.com/story.php/7774/IceWM--The-Cool-Window-Manager/ IceWM - The Cool Window Manager] - Detailed introduction on OSNews
* [https://www.osnews.com/story.php/7774/IceWM--The-Cool-Window-Manager/ IceWM The Cool Window Manager] – detailed introduction at OSNews, 2004
* [https://web.archive.org/web/20100613011705/http://polishlinux.org/apps/window-managers/icewm-a-desktop-for-windows-emmigrants/ IceWM - A desktop for Windows emigrants] - Overview and tutorial from polishlinux.org
* [https://web.archive.org/web/20100613011705/http://polishlinux.org/apps/window-managers/icewm-a-desktop-for-windows-emmigrants/ IceWM A desktop for Windows emigrants] – overview and tutorial from polishlinux.org, archived in 2010
* [https://www.theregister.com/2022/10/05/icewm_version_3/ IceWM reaches version 3 after a mere 25 years] – Liam Proven for ''The Register'', October 2022

Latest revision as of 13:31, 29 May 2023

According to Wikipedia:

IceWM is a window manager for the X Window System graphical infrastructure, written by Marko Maček. It was coded from scratch in C++ and is released under the terms of the GNU Lesser General Public License. It is relatively lightweight in terms of memory and CPU usage, and comes with themes that allow it to imitate the UI of Windows 95, OS/2, Motif, and other graphical user interfaces.

Installation

Install the icewm package.

Install the icewm-gitAUR package for the development version.

Starting

With xinit run icewm, or icewm-session to also run icewmbg and icewmtray.

Note: icewm-session is needed for the startup script to work.

Configuration

Although IceWM configuration is originally text-based, there are GUI tools available, notably icewm-utilsAUR. However, these tools are relatively old and most users prefer to edit the text configuration files. Configuration changes from the defaults can be made either system wide (in /etc/icewm/) or on a user-specific basis (in ~/.config/icewm/).

To change your icewm configuration from the default, copy the default configuration files from /usr/share/icewm/ to ~/.config/icewm/, for example:

$ cp -r /usr/share/icewm/ ~/.config/icewm/
  • preferences is the core configuration file for IceWM.
  • menu controls the contents of the IceWM application menu.
  • keys allows the user to customize keyboard shortcuts.
  • toolbar row of launcher icons on the taskbar.
  • winoptions behavior of individual applications.
  • theme theme path/name.
  • startup script or command (must be executable) executed on startup.
  • shutdown the same for shutdown.

Autostart

The startup script is not provided by the icewm package so you will need to create it yourself, add the commands for the programs that you wish to start with the IceWM session and make it executable.

Note: Startup commands that install system tray applets must be preceded by sleep 1 &&, otherwise IceWM will create an ugly black window that will prevent it from quitting; in that case, use xkill on the task bar.

Below is an example of an IceWM startup script which starts network-manager-applet and XScreenSaver within the IceWM session:

~/.config/icewm/startup
#!/bin/sh

# start network manager
    sleep 1 &&
    nm-applet &

# enable bluetooth applet
    sleep 1 &&
    blueman-applet &

# enable screensaver
    xscreensaver -nosplash &

# start redshift
    redshift &

# allow notifications
    /usr/lib/notification-daemon-1.0/notification-daemon &
    
# enable lockscreen
    exec xautolock -detectsleep -time 15 -locker "i3lock -n -i /home/user/lockscreen.png" -killtime 20 -killer "systemctl suspend" #lock after inactivity and then sleep

Generating menu entries

menumaker from the official repositories is a Python script that automatically populates your applications menu based on what is installed in your system. Although this may result in a menu filled with many unwanted applications, it may still be preferable to manually editing the menu configuration file. When running MenuMaker, use the -f flag to overwrite an existing menu file:

$ mmaker -f icewm

You can avoid populating your menu with terminal based applications such as alsamixer by running the following switches with the mmaker command: --no-legacy and --no-debian. For example:

$ mmaker -f --no-legacy --no-debian icewm

Alternatively, you can generate a menu using xdg-menu. See the xdg-menu#IceWM section.

Themes

A small number of themes are included in the icewm package. These can supplemented by the themes available from the icewm-extra-themesAUR package. Many more themes can be downloaded from box-look.org.

Desktop icons

A file manager such as PCManFM or roxAUR can manage the wallpaper and add desktop icons. Alternatively, you could install Idesk, a small program that can also add icons to the desktop.

Tips and tricks

Compositing

IceWM is not a compositing window manager. If you need compositing with IceWM, you have the option of using a standalone composite manager such as Xcompmgr or Picom.

Troubleshooting

No start menu icon (Intel graphics)

If you are using IceWM with Intel graphics you may find that the start menu in your taskbar has no icon. This is due to a recent change in the xf86-video-intel driver which means that the new, but rather unstable, SNA acceleration backend is used by default. To fix the start menu issue (and other possible graphical glitches) you need to switch back to the older UXA backend. See the following article: Intel graphics#AccelMethod.

Unable to logout when PCManFM is managing the desktop

If you use PCManFM to manage the desktop you may find that the IceWM logout button no longer works. As a workaround, you can define a logout command. This should allow you to logout whilst PCManFM is managing the desktop. To do this, uncomment LogoutCommand:

~/.config/icewm/preferences
LogoutCommand="pkill -u username"

No shutdown or reboot options in logout menu

  • Logout command has been defined:

Shutdown and reboot commands will be ignored if a logout command has been defined. If you want shutdown and reboot options in the logout menu then you must not define a logout command.

  • Logout command has not been defined:

If you have defined shutdown and reboot commands (such as systemctl poweroff and systemctl reboot) and you have not defined a logout command but you still find that there are no shutdown or reboot options in the logout menu then update to icewm 1.3.8-2. See FS#37884 for more information.

See also