The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

startx-синглтон, или "как не искать уже запущенную сессию" (x11 session kde)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: x11, session, kde,  (найти похожие документы)
From: Michael Shigorin <mike@osdn.org.ua.> Newsgroups: Date: Mon, 23 Apr 2008 17:02:14 +0000 (UTC) Subject: startx-синглтон, или "как не искать уже запущенную сессию" Задача ------ В домашних условиях Linux-система зачастую используется несколькими пользователями, при этом может возникнуть проблема нахождения своей графической сессии. Она местами решена как минимум в текущем KDE, но не все из нас пользуются "современными десктопными окружениями" -- некоторые предпочитают, например, WindowMaker ;-) При этом строчка в ~family/.bash_profile такого вида: [ -z "$DISPLAY" ] && startx && logout решает только проблему автозапуска новой, но не поиска существующей сессии. Не так-то весело найти ещё штуки три-четыре KDE в памяти, придя с работы :) Решение Поэтому для давно привычной домашней обстановки, где пользователи давно привыкли переходить в консоль и логиниться там, если графическая сессия уже запущена -- был нарисован и упакечен в ALT Linux под именем start-or-find-x такой скрипт (http://git.altlinux.org/people/mike/packages/?p=start-or-find-x.git) #!/bin/sh # a "singleton" script to use instead of startx, # possibly to be *sourced* in one's shell profile # (so logout works and no extra shells are left) # # 2008, Michael Shigorin <mike@altlinux.org.> # public domain # NB: exit/return might break xinitrc disregarding of $SHLVL if [ -z "$DISPLAY" ]; then # find an existing session and switch there, # or failing that, try to start a new one prefix="/tmp/.X11-unix" logfix="/var/log/Xorg" # XFree86 is next to nonexistent in 2008... group="`id -gn`" # won't do *dm (root there) # print display number (e.g. 2) # there might be multiple logins already, use first as a better habit find_x() { find "$prefix" -group "$1" -name "X[0-9]*" \ | sort -n \ | head -1 \ | sed "s,^$prefix/X,," } # print VT number (e.g. 9) # a socket guarantees a log find_vt() { sed -n "s,^.* VT number \([0-9]\+\),\1,p" "$logfix.$1.log" } [ -n "$group" ] || startx # ouch! X would probably break too x="`find_x "$group"`" [ -n "$x" ] || { startx; exit; } # start new one, don't leave shell after vt="`find_vt "$x"`" [ -z "$vt" ] || { chvt "$vt"; exit; } # use existing session # weird, you probably want your shell by this time fi # already there, just lend a shell

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Вова (?), 15:49, 06/01/2011 [ответить]  
  • +/
    окончательный результат -  что-то типа screen, но для иксов?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру