Не секрет, что KDE слишком долго запускается – это является, наверное, самой главной причиной разговоров о его тормознутости, ведь работать в этой среде можно, притом вполне быстро и успешно. Почему так происходит? Выделю несколько причин:
- стартовый скрипт startkde;
- большое количество приложений, загружаемых в трей;
- службы, запускающиеся при старте KDE.
Что со всем этим делать? Кажется, понятно: скрипт startkde надо модифицировать, ненужные приложения из трея выкинуть, ненужные службы убрать из автозагрузки.
Например, мне не нужен ни календарь, ни Klipper, которые запускались по умолчанию у меня. С ними сладить легко: правой кнопкой на иконку в трее, выйти и не запускаться при логине. Итак, из трея всё ненужное таким способом убрано (я оставил лишь klaptop – довольно полезная вещь).
Теперь отключим ненужные службы (Control Center -> KDE Components -> Service Manager). Синтаксис вроде бы прозрачный: внизу службы, которые запускаются при загрузке KDE, а вверху – те, которые запускаются после действия пользователя. Также можно изменить пункт KDE Performance (тоже находится в KDE Components): preloading поставить на 0 (чтобы Konqueror никогда не загружался в память при старте), а во вкладке System поставить галочку (перед этим обязательно прочитав, к чему это может привести =)). По пунктам меню есть довольно подробная помощь, так что можно ей воспользоваться.
Заключительный аккорд: правим startkde (у меня он находится в /opt/kde/bin), найдя его с помощью либо find, либо простого whereis. Всё, касающееся шрифтов в этом скрипте я удалил (множественные mkfontdir’ы, rebuild шрифтов…). Больше никакого криминала я с ходу не нашёл :). Приложу свой startkde:
#!/bin/sh
#
# MODIFIED :D KDE STARTUP SCRIPT ( KDE-3.5.5 )
#
# When the X server dies we get a HUP signal from xinit. We must ignore it
# because we still need to do some cleanup.
trap ‘echo GOT SIGHUP’ HUP
# Check if a KDE session already is running
if kcheckrunning >/dev/null 2>&1; then
echo “KDE seems to be already running on this display.”
xmessage -geometry 500×100 “KDE seems to be already running on this display.” > /dev/null 2>/dev/null
exit 1
fi
# Set the background to plain grey.
# The standard X background is nasty, causing moire effects and exploding
# people’s heads. We use colours from the standard KDE palette for those with
# palettised displays.
if test -z “$XDM_MANAGED” || echo “$XDM_MANAGED” | grep “,auto” > /dev/null; then
xsetroot -solid “#000000″
fi
# we have to unset this for Darwin since it will screw up KDE’s dynamic-loading
unset DYLD_FORCE_FLAT_NAMESPACE
# in case we have been started with full pathname spec without being in PATH
bindir=`echo “$0″ | sed -n ’s,^\(/.*\)/[^/][^/]*$,\1,p’`
if [ -n "$bindir" ]; then
case $PATH in
$bindir|$bindir:*|*:$bindir|*:$bindir:*) ;;
*) PATH=$bindir:$PATH; export PATH;;
esac
fi
# Boot sequence:
#
# kdeinit is used to fork off processes which improves memory usage
# and startup time.
#
# * kdeinit starts the dcopserver and klauncher first.
# * Then kded is started. kded is responsible for keeping the sycoca
# database up to date. When an up to date database is present it goes
# into the background and the startup continues.
# * Then kdeinit starts kcminit. kcminit performs initialisation of
# certain devices according to the user’s settings
#
# * Then ksmserver is started which takes control of the rest of the startup sequence
# The user’s personal KDE directory is usually ~/.kde, but this setting
# may be overridden by setting KDEHOME.
kdehome=$HOME/.kde
test -n “$KDEHOME” && kdehome=`echo “$KDEHOME”|sed “s,^~/,$HOME/,”`
# see kstartupconfig source for usage
mkdir -m 700 -p $kdehome
mkdir -m 700 -p $kdehome/share
mkdir -m 700 -p $kdehome/share/config
cat >$kdehome/share/config/startupconfigkeys /env/*.sh and /env/*.sh
# (where is $KDEHOME or ~/.kde, and is where KDE is installed)
#
# This is where you can define environment variables that will be available to
# all KDE programs, so this is where you can run agents using e.g. eval `ssh-agent`
# or eval `gpg-agent –daemon`.
# Note: if you do that, you should also put “ssh-agent -k” as a shutdown script
#
# (see end of this file).
# For anything else (that doesn’t set env vars, or that needs a window manager),
# better use the Autostart folder.
exepath=`kde-config –path exe | tr : ‘\n’`
for prefix in `echo “$exepath” | sed -n -e ’s,/bin[^/]*/,/env/,p’`; do
for file in “$prefix”*.sh; do
test -r “$file” && . “$file”
done
done
# Set a left cursor instead of the standard X11 “X” cursor, since I’ve heard
# from some users that they’re confused and don’t know what to do. This is
# especially necessary on slow machines, where starting KDE takes one or two
# minutes until anything appears on the screen.
#
# If the user has overwritten fonts, the cursor font may be different now
# so don’t move this up.
#
xsetroot -cursor_name left_ptr
# Link “tmp” resource to directory in /tmp
# Creates a directory /tmp/kde-$USER and links $KDEHOME/tmp-$HOSTNAME to it.
lnusertemp tmp >/dev/null
# Link “socket” resource to directory in /tmp
# Creates a directory /tmp/ksocket-$USER and links $KDEHOME/socket-$HOSTNAME to it.
lnusertemp socket >/dev/null
# Link “cache” resource to directory in /var/tmp
# Creates a directory /var/tmp/kdecache-$USER and links $KDEHOME/cache-$HOSTNAME to it.
lnusertemp cache >/dev/null
# In case of dcop sockets left by a previous session, cleanup
dcopserver_shutdown
echo ’startkde: Starting up…’ 1>&2
# run KPersonalizer before the session, if this is the first login
if test “$kpersonalizerrc_general_firstlogin” = “true”; then
# start only dcopserver, don’t start whole kdeinit (takes too long)
echo ’startkde: Running kpersonalizer…’ 1>&2
dcopserver
kwin –lock &
kpersonalizer –before-session
# handle kpersonalizer restarts (language change)
while test $? -eq 1; do
kpersonalizer –r –before-session
done
dcopquit kwin
dcopserver_shutdown –wait
fi
# the splashscreen and progress indicator
case “$ksplashrc_ksplash_theme” in
None)
;; # nothing
Simple)
if test “$kpersonalizerrc_general_firstlogin” = “true”; then
ksplashsimple
fi # otherwise started earlier
;;
*)
ksplash –nodcop
;;
esac
# Mark that full KDE session is running (e.g. Konqueror preloading works only
# with full KDE running). The KDE_FULL_SESSION property can be detected by
# any X client connected to the same X session, even if not launched
# directly from the KDE session but e.g. using “ssh -X”, kdesu. $KDE_FULL_SESSION
# however guarantees that the application is launched in the same environment
# like the KDE session and that e.g. KDE utilities/libraries are available.
# KDE_FULL_SESSION property is also only available since KDE 3.5.5.
# The matching tests are:
# For $KDE_FULL_SESSION:
# if test -n “$KDE_FULL_SESSION”; then … whatever
# For KDE_FULL_SESSION property:
# xprop -root | grep “^KDE_FULL_SESSION” >/dev/null 2>/dev/null
# if test $? -eq 0; then … whatever
#
KDE_FULL_SESSION=true
export KDE_FULL_SESSION
xprop -root -f KDE_FULL_SESSION 8t -set KDE_FULL_SESSION true
# We set LD_BIND_NOW to increase the efficiency of kdeinit.
# kdeinit unsets this variable before loading applications.
LD_BIND_NOW=true start_kdeinit –new-startup +kcminit_startup
if test $? -ne 0; then
# Startup error
echo ’startkde: Could not start kdeinit. Check your installation.’ 1>&2
xmessage -geometry 500×100 “Could not start kdeinit. Check your installation.”
fi
# If the session should be locked from the start (locked autologin),
# lock now and do the rest of the KDE startup underneath the locker.
if test -n “$DESKTOP_LOCKED”; then
unset DESKTOP_LOCKED # Won’t need it any more
kwrapper kdesktop_lock –forcelock &
# Give it some time for starting up. This is somewhat unclean; some
# notification would be better.
sleep 1
fi
# finally, give the session control to the session manager
# see kdebase/ksmserver for the description of the rest of the startup sequence
# if the KDEWM environment variable has been set, then it will be used as KDE’s
# window manager instead of kwin.
# if KDEWM is not set, ksmserver will ensure kwin is started.
# kwrapper is used to reduce startup time and memory usage
# kwrapper does not return usefull error codes such as the exit code of ksmserver.
# We only check for 255 which means that the ksmserver process could not be
# started, any problems thereafter, e.g. ksmserver failing to initialize,
# will remain undetected.
test -n “$KDEWM” && KDEWM=”–windowmanager $KDEWM”
kwrapper ksmserver $KDEWM
if test $? -eq 255; then
# Startup error
echo ’startkde: Could not start ksmserver. Check your installation.’ 1>&2
xmessage -geometry 500×100 “Could not start ksmserver. Check your installation.”
fi
# wait if there’s any crashhandler shown
while dcop | grep -q ^drkonqi- ; do
sleep 5
done
echo ’startkde: Shutting down…’ 1>&2
# Clean up
kdeinit_shutdown
dcopserver_shutdown –wait
artsshell -q terminate
echo ’startkde: Running shutdown scripts…’ 1>&2
# Run scripts found in $KDEDIRS/shutdown
for prefix in `echo “$exepath” | sed -n -e ’s,/bin[^/]*/,/shutdown/,p’`; do
for file in `ls “$prefix” 2> /dev/null | egrep -v ‘(~|\.bak)$’`; do
test -x “$prefix$file” && “$prefix$file”
done
done
unset KDE_FULL_SESSION
xprop -root -remove KDE_FULL_SESSION
echo ’startkde: Done.’ 1>&2
P.S. не сомневаюсь, что гадкий вордпресс опять что-нибудь съел :), поэтому надо бы файл в другое место выложить.. Вот только не знаю, куда. На googlepages, что ли?
Январь 9, 2007 в 2:38 пп
Было бы не плохо, в двух словах суть модификаций startkde. =)
Январь 9, 2007 в 3:53 пп
Так я ж написал: убираем ребилд шрифтов. Весь шлак, касающийся шрифтов, начиная со строчки:
# Activate the kde font directories.я удалил (заканчивая
xset fp rehash).Ибо пользовательских шрифтов у меня нет в принципе (да и вряд ли они у кого-то есть на домашней тачке). К сожалению, не могу сказать, сколько времени я выиграл после подобной операции :)
Январь 9, 2007 в 4:03 пп
Прошу прощения. Не заметил =)
Думаю, что раз шрифтов нет, то он может и вообще не выполнял лишние ребилды =)
Будет время, тоже покопаю, что он там делает то.
Февраль 27, 2007 в 9:57 дп
> Вот только не знаю, куда.
Неужто и вправду не придумали, куда? Для хороших вещей место на posix.ru найдется
Март 3, 2007 в 5:33 дп
спасиб за инфу.
Март 3, 2007 в 7:53 дп
Статья благодаря alv выложена на posix.ru:
http://posix.ru/desktop/kde_start/
Март 5, 2007 в 4:52 пп
Как это напаминает статьи типа “Ускорение запуска Windows XX” :-(
Время накопления барахла постепенно сменятеся временем отказа от барахла… как это знакомо. Сколько же можно ходить по одним и тем же граблям? Придумывать тормозные и бесполезные красотульки (а иногда и не красотульки вовсе), придумывать как их отключить…
Март 5, 2007 в 6:33 пп
Это к чему?
Март 6, 2007 в 10:12 дп
Ну как к чему,
1) к этой статье
2) к КДЕ
3) ко всем стараниям превратить Linux в винду
ИМХО Linux тем и хорош (был), что не пытался сам что-то настраивать, а полностью подчинялся администратору; что не тащил за собой мильён всяких кастыликов, иконочек, скриптиков… в которых хрен разберёшься и которые нужны только их разработчикам, а позволял пользователю самому поставить то, что ему нужно.
А на последние тенденции больно смотреть. Одни пытаются сделать из линукса винды, другие разбираются, как это всю автоматику вычистить.
Справедливости ради скажу, что сам работаю под фрёй и под линукс потому, что там, где я работаю, всё работает под юниксами. Отказываться от юниксов не собираюсь, но тенденции мне не нравятся. Подозреваю, что линукс скоро станет такой же неуправляемой попсой как винда, а на смену ему (в программистские круги) придёт какая-нибудь инферна (кстати, очень толковый проект).
Март 6, 2007 в 10:16 дп
> Статья благодаря alv выложена на posix.ru:
а вот копирование информации в Web-самое большое зло! и разрушение web-пространства. про это можно почитать у меня http://michurin.com.ru/nonsense.shtml
не сочтите за рекламу, просто наболело.
Март 6, 2007 в 2:28 пп
Ну не нравится, не пользуйтесь. В чём ещё проблема? Зачем людей надо учить жить? Каждый делает то, что хочет. Великий Пат использует KDE. Сам Бог.
Март 6, 2007 в 4:03 пп
я не учу :-) я что? где-то сказал “не пользуятесь кде”? или даже “не пользуйтесь виндовс”? я даже не говорю “не ходите по хоженым граблям”? нет, я этого не говорю. я говорю только, что всё одно и тоже повторяется. а учить — упаси Господи, только ушат грязи на себя накликаешь :-)
Март 6, 2007 в 10:45 пп
просто KDE людям нужно, спору нет в этом, я надеюсь? А если нужно, что ж хулить? Что для вас барахло, для кого-то решение… И в этом преимущество как раз, в многополярной модели мира.
Март 7, 2007 в 8:43 дп
Ну я и не хулю. И винда нужна (причём нужнее, чем КДЕ). А барахлом называю не потому, что мне оно не нужно (хотя мне оно тоже не нужно), а потому, что появляются вот такие статьи.
Март 7, 2007 в 8:45 дп
Гыгы, Slackware – тоже барахло, как речи появляются про ускорение его запуска?
Тащусь от логики…
Март 7, 2007 в 10:50 дп
ну зачем же так обобщать? :-) тогда уж говорите “копьютор тоже барахло…” :-) слакварь большой, в rc там действительно напихивают всякую ерунду, но зачем же слакварь весь обижать, это наверно лучший linux-дистрибутив на текущий момент. если б не убунту, я бы с полной уверенностью сказал, что слакварь лучший.
Март 7, 2007 в 6:10 пп
к KDE применимы те же слова. А вот любить Ubuntu по сравнению со Slackware и ругать KDE – это за гранью.
Лучший – это ArchLinux.
Август 6, 2007 в 1:31 дп
Простите господа, не удержался. :)
Я принципиально отказываюсь от суждений типа: Лучше-Хуже, хотя как и все тоже имею своё мнение. К сожалению испытываю острую нехватку времени, поэтому для меня важно работа из коробки. Установил и забыл. И это никак не Убунта, к которой надо всё прикручивать.. :) Во всём мраке видов дистрибутивов, сомневаюсь что можно найти то, что нужно конкретно мне, кроме как создать свой дистрибутив, но опять-же, время которого нет.. Надеюсь, в скором времени и Берил будут встраивать в КДЕ, как встроили в КДЕ 4 Аквамарин.. Ещё, я просто не понимаю ворчливых фанатов “голой консоли”, прогресс должен идти и он будет идти дальше и дальше.. Не смотря на финансовые желания господ, делающих красивые игры только под винды.. :) А КДЕ – просто удобная большинству оболочка, нет ничего плохого в твиках, ведь есть уже пакет для этого дела, правда самих твиков там мало..
Сентябрь 13, 2007 в 1:35 пп
Вот читаешь о никсах, сам недавно поставил – и становиться горестно… это ж сколько же времени нужно убить на полную отстройку системы(никсов), – что бы “все работало” ? Бесконечные скрипты миллиарды глупых комманд… отсутствие четкой идеи… просто ужас… Неужели как раз это считается высшем пилотажем ??? И как то Винда начинает расти в моих глазах, в которой, хотя бы, какая то “стабильность” от версии к версии.
Сентябрь 13, 2007 в 6:28 пп
Всё работает и так, без настройки. Просто каждый любит индивидуальную настройку, в которой уже извращается так, как хочет. А стабильность, действительно, в кавычках :D
Октябрь 23, 2007 в 8:33 пп
>Одни пытаются сделать из линукса винды, другие разбираются, как это всю >автоматику вычистить.
>Справедливости ради скажу, что сам работаю под фрёй и под линукс потому, >что там, где я работаю, всё работает под юниксам
На самом деле большое спасибо автору. Такая оптимизация значительно повышает эффективность работы. А по поводу негативных комментариев – не хотите, не пользуйтесь, каждому свое.