Icewm
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 и скопируйте туда все эти файлы.
- menu - пункты меню
- keys - привязка клавиш к командам
- preferences - настройки внешнего вида и пр.
- toolbar - пункты в мини баре который слева
- theme - текущая тема
- winoptions - настрока окон
- папка icons - здесь находятся иконки которые понадобятся для отображения в мини баре
- папка taskbar - изображения для вида анекли задач
- mailbox - изображения для почтового ящика
- ledclock - изображения для часов
- 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 в домашнем каталоге, тогда скрипт будет работать.