OpenSolaris, OpenIndiana, Nexenta Forum
OpenSolaris, OpenIndiana, Nexenta => OpenIndiana => Тема начата: keremet от Январь 17, 2015, 02:48:42 am
-
http://dwm.suckless.org/
http://www.calculate-linux.org/blogs/ru/212/show
Компиляция и установка:
wget http://dl.suckless.org/dwm/dwm-6.0.tar.gz
tar xf dwm-6.0.tar.gz
cd dwm-6.0
make
sudo cp dwm /usr/bin
$ cat ~/.xinitrc
exec dwm
Запуск: startx
Указать шрифты из /usr/X11/lib/X11/fonts , чтобы отображались русские буквы на верхней панели
Меню:
wget http://dl.suckless.org/tools/dmenu-4.5.tar.gz
tar xf dmenu-4.5.tar.gz
cd dmenu-4.5
make
sudo cp dmenu /usr/bin/dmenu_run
Изменения в исходники dmenu:
case XK_KP_Enter:
if (vfork() == 0){ // child
if(execlp((sel && !(ev->state & ShiftMask)) ? sel->text : text, 0)<0){
//cerr<< "failed to execvp\n";
//return -1;
}
//}else if (pID < 0){ // failed to fork
}else{
}
/*puts*///system((sel && !(ev->state & ShiftMask)) ? sel->text : text);
exit(EXIT_SUCCESS);
.....
static Item items[] ={{"firefox", 0, 0}, {"gedit", 0, 0}, {"gajim", 0, 0}, {"gnome-commander", 0, 0}, {"gimp", 0, 0}, {"soffice", 0, 0}, {0,0,0}};
....
void
readstdin(void) {
char buf[sizeof text], *p, *maxstr = NULL;
size_t i, max = 0, size = 0;
/* read each line from stdin and add it to the item list */
/* for(i = 0; fgets(buf, sizeof buf, stdin); i++) {
if(i+1 >= size / sizeof *items)
if(!(items = realloc(items, (size += BUFSIZ))))
eprintf("cannot realloc %u bytes:", size);
if((p = strchr(buf, '\n')))
*p = '\0';
if(!(items.text = strdup(buf)))
eprintf("cannot strdup %u bytes:", strlen(buf)+1);
if(strlen(items.text) > max)
max = strlen(maxstr = items.text);
}
if(items)
items.text = NULL;*/
inputw = maxstr ? textw(dc, maxstr) : 0;
lines = MIN(lines, i);
}
-
dmenu - не собирается, gedit - падает, а так нормально.
(http://s12.postimg.org/jmxs8dj6x/Screenshot_dwm_6dot0.jpg) (http://postimg.org/image/jmxs8dj6x/)
-
Забыл написать: чтобы собралось dmenu, надо изменить CFLAGS в config.mk - убрать опцию -D_POSIX_C_SOURCE=2
-
А когда gedit падает, он выдает какие-нибудь сообщения? У меня он и из терминала, и из dmenu нормально открывается
-
На снимке слева вверху есть сообщения от gedit, он нигде ещё не записан в dwm.
-
Собралось на пробу кое-что
md5: 4519eaa6191eeed6ac090bc368258ca2 terminus-font-4.38-x86-oi_151a9.pkg.tar.bz2 (https://yadi.sk/d/Gb1OvZuJeEHRH)
md5: 8ccf38f14e2d72024c33ea0a0b944290 dwm-6.0-x86-oi_151a9.pkg.tar.bz2 (https://yadi.sk/d/4cINJbvzeEHaN)
md5: a9e480f21d8f7f80e1da03c8f887be8d dmenu-4.5-x86-oi_151a9.pkg.tar.bz2 (https://yadi.sk/d/eWnKbUUBeEHb7)
(http://s8.postimg.org/y9dzd1169/Screenshot_dwm.jpg) (http://postimg.org/image/y9dzd1169/)
-
Нашел пачт, чтобы сделать добавить трей в правом верхем углу: http://dwm.suckless.org/patches/systray
Чтобы отображались дата и время, а также менялась раскладка:
keremet@openindiana:~$ cat .xinitrc
setxkbmap -layout "us,ru"
setxkbmap -option "grp:ctrl_shift_toggle"
while xsetroot -name "`date '+%d.%m.%y %H:%M:%S'`"
do
sleep 1
done &
exec dwm
-
Набросал скриптик на выход, перезагрузку и выключение.
Открывается из dmenu, если его подходяще назвать
и положить в /usr/bin
#!/usr/bin/bash
zenity_list() {
RETURN=$(/usr/bin/zenity --list \
--title="$(uname -svp)" \
--text=" $HOSTNAME" \
--column='' --column="Pick me" \
--hide-column=1 \
1 Logout \
2 Reboot \
3 Shutdown
)
}
if [ -x /usr/bin/zenity ]; then
if [ -n "$DISPLAY" ]; then
zenity_list
if [ -n "$RETURN" ]; then
case "$RETURN" in
1) /usr/bin/zenity --question --timeout=10 \
--title "Logout Confirmation" --text "\nLogout?"
if [ "$?" -eq "0" ]
then
/usr/gnu/bin/kill -1 $(/usr/bin/pgrep X) > /dev/null 2>&1
fi
;;
2) /usr/bin/zenity --entry --title "Reboot Confirmation" \
--text "Enter user password to reboot:" --entry-text "" \
--hide-text|/usr/bin/sudo -S /usr/sbin/reboot -p > /dev/null 2>&1
;;
3) /usr/bin/zenity --entry --title "Shutdown Confirmation" \
--text "Enter user password to shutdown:" --entry-text "" \
--hide-text|/usr/bin/sudo -S /usr/sbin/init 5 > /dev/null 2>&1
;;
esac
fi
fi
fi
А если сделать ~/.bash_profile то иксы будут стартовать
при входе.
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/console ]]; then
echo ""
echo "Hello!"
echo ""
exec startx
fi