Автор Тема: Замечательный оконный менеджер DWM  (Прочитано 3818 раз)

Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 456
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Замечательный оконный менеджер DWM
« : Январь 16, 2015, 06:48:42 pm »
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);
}

Оффлайн openuser

  • Продвинутый пользователь
  • ***
  • Сообщений: 34
  • Репутация: +4/-0
    • Просмотр профиля
Re: Замечательный оконный менеджер DWM
« Ответ #1 : Январь 20, 2015, 04:52:06 am »
dmenu - не собирается, gedit - падает, а так нормально.



Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 456
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Re: Замечательный оконный менеджер DWM
« Ответ #2 : Январь 21, 2015, 02:03:54 pm »
Забыл  написать: чтобы собралось dmenu, надо изменить CFLAGS в config.mk - убрать опцию -D_POSIX_C_SOURCE=2

Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 456
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Re: Замечательный оконный менеджер DWM
« Ответ #3 : Январь 21, 2015, 02:05:43 pm »
А когда gedit падает, он выдает какие-нибудь сообщения? У меня он и из терминала, и из dmenu нормально открывается

Оффлайн openuser

  • Продвинутый пользователь
  • ***
  • Сообщений: 34
  • Репутация: +4/-0
    • Просмотр профиля
Re: Замечательный оконный менеджер DWM
« Ответ #4 : Январь 22, 2015, 02:08:57 am »
На снимке слева вверху есть сообщения от gedit, он нигде ещё не записан в dwm.

Оффлайн openuser

  • Продвинутый пользователь
  • ***
  • Сообщений: 34
  • Репутация: +4/-0
    • Просмотр профиля
Re: Замечательный оконный менеджер DWM
« Ответ #5 : Январь 25, 2015, 04:52:01 pm »
Собралось на пробу кое-что

md5: 4519eaa6191eeed6ac090bc368258ca2   terminus-font-4.38-x86-oi_151a9.pkg.tar.bz2
md5: 8ccf38f14e2d72024c33ea0a0b944290   dwm-6.0-x86-oi_151a9.pkg.tar.bz2
md5: a9e480f21d8f7f80e1da03c8f887be8d   dmenu-4.5-x86-oi_151a9.pkg.tar.bz2


Оффлайн keremet

  • Global Moderator
  • ROOT
  • *****
  • Сообщений: 456
  • Репутация: +237/-0
    • Просмотр профиля
    • OpenSolaris
Re: Замечательный оконный менеджер DWM
« Ответ #6 : Январь 28, 2015, 04:17:05 pm »
Нашел пачт, чтобы сделать добавить трей в правом верхем углу: 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

Оффлайн openuser

  • Продвинутый пользователь
  • ***
  • Сообщений: 34
  • Репутация: +4/-0
    • Просмотр профиля
Re: Замечательный оконный менеджер DWM
« Ответ #7 : Февраль 02, 2015, 05:06:34 am »
Набросал скриптик на выход, перезагрузку и выключение.
Открывается из 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
« Последнее редактирование: Февраль 07, 2015, 06:17:37 am от openuser »