IceWM править

Описание править

IceWM — менеджер окон для X Window System в Unix-подобных операционных системах. Разработка IceWM началась с нуля в 1997-ом году, проект написан целиком на C++ и выпущен на условиях лицензии GNU LGPL. Цель проекта — создание рабочей среды с удобным и быстрым интуитивным интерфейсом с широкими возможностями для настройки пользователем. В частности, все функции графического интерфейса доступны при использовании только клавиатуры. В то же время в число задач входила максимальная «лёгкость» IceWM в плане потребляемых ресурсов компьютера — памяти и процессора.

Установка править

Arch править

pacman -S icewm

Debian править

apt install icewm

Open SUSE править

https://software.opensuse.org/package/icewm

Другие дистрибутивы править

https://sourceforge.net/projects/icewm/

Настройка править

Описание файлов править

Файлы настройки находятся по пути /usr/share/icewm/. Создайте в домашнем каталоге папку .icewm и скопируйте туда все эти файлы.

  1. menu - пункты меню
  2. keys - привязка клавиш к командам
  3. preferences - настройки внешнего вида и пр.
  4. toolbar - пункты в мини баре который слева
  5. theme - текущая тема
  6. winoptions - настрока окон
  7. папка icons - здесь находятся иконки которые понадобятся для отображения в мини баре
  8. папка taskbar - изображения для вида анекли задач
  9. mailbox - изображения для почтового ящика
  10. ledclock - изображения для часов
  11. themes - здесь находятся темы

Запуск править

Чтобы войти в icewm создайте в своём домашнем каталоге файл .xinitrc. .xinitrc для запуска icewm:

#!/bin/sh

exec icewm

.xinitrc для полноценного запуска icewm:

#!/bin/sh

exec icewm-session

Используйте дисплейный менеджер slim или прочий поддерживающий загрузку из .xinitrc.

Дополнения править

Смена фона не выходя из сеанса править

Данный скрипт меняет фон рабочего стола. Небходимо указать полный путь к картинке иначе ничего не выйдет.

#!/bin/bash

# icebg

[ -z "$1" ] && echo "Использование: $(basename $0) [полный путь к файлу]" && exit 1

pref=$HOME/.icewm/preferences

[ ! -e "$1" ] && echo "Файла $1 не существует" && exit 1
[ ! -f "$1" ] && echo "$1 не является картинкой" && exit 1

Path="$1"
forSed=${Path//\//\\\/}

sed -i -r 's/DesktopBackgroundImage=.*/DesktopBackgroundImage=\"'$forSed'\"/' $pref

icewmbg &>/dev/null &
sleep 1
kill $(pidof icewmbg) &>/dev/null
echo "Картинка изменена на $1"

Закиньте скрипт в папку /usr/local/bin чтобы вызывать из любого места.

Автоматическая смена фона править

Данный скрипт будет менять картинку каждый раз при заходе в систему:

#!/bin/bash

# for icewm

symlink=/home/user/Images/picture.jpg
Path=/home/user/WALLAPERS

count=$(ls $Path|wc -l)
rnd=$RANDOM
let rnd%=count
unlink $symlink
ln -s $Path/$rnd.jpg $symlink

Чтобы скрипт работал поместите картинки в папку указанную в переменной Path скрипта.
Затем откройте в текстовом редакторе файл ~/.icewm/preferences и найдите там строчку c

DesktopBackgroundImage

и задайте ей значение /home/user/Images/picture.jpg. Если измените в скрипте этот путь, то в файле preferences тоже меняйте иначе работать не будет.
Чтобы скрипт работал нужно все jpg файлы переименовать по номерам. Сделать это можно через такой скрипт:

#!/bin/bash

declare -i i=1
for file in $(ls -t1 WALLAPERS); do
	mv "WALLAPERS/$file" WALLAPERS/$i.jpg
	((i++))
done

echo "Переименовано файлов: $i"

Зайдите в родительскую директорию папки WALLAPERS и выполните этот скрипт. Все файлы будут переименованы в нужный вид.
Создайте файл ~/change-backg.sh и вставьте туда первый скрипт. Затем добавьте эту строчку в .xinitrc до exec:

/home/user/change-backg.sh

user замените на своё имя пользователя.
Теперь картинка будет менятся каждый раз при логине в icewm.

Улучшенная версия скрипта править

Данный скрипт не использует символические ссылки и напрямую меняет файл preferences:

#!/bin/bash

# for icewm

Path=$HOME/WALLAPERS
pref=$HOME/.icewm/preferences

sedPath=${Path//\//\\\/}
[ ! -d "$Path" ] && echo "Папки $Path не существует" && exit 1

count=$(ls $Path|wc -l)
[ "$count" -eq 0 ] && echo "В папке $Path нет картинок" && exit 1

declare -i i=0
for file in $(ls -t1 "$Path"); do
	arr[$i]="$file"
	((i++))
done

rnd=$RANDOM
let rnd%=count

sed -i -r 's/DesktopBackgroundImage=.*/DesktopBackgroundImage=\"'$sedPath'\/'${arr[$rnd]}'\"/' $pref

Закидывайте файлы с любым именем и в любом количестве в папку WALLAPERS в домашнем каталоге, тогда скрипт будет работать.