LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   Who starts the screen saver in Xfce 4.10? (https://www.linuxquestions.org/questions/slackware-14/who-starts-the-screen-saver-in-xfce-4-10-a-4175445994/)

stf92 01-17-2013 04:41 AM

Who starts the screen saver in Xfce 4.10?
 
Slackware 14.0
Xfce 4.10

Hi: I have been trying to find the script the screen saver is run from, after I run startx, if there is one. In 12.0, there was /etc/xfce/xdg/xfce4/xinitrc (f1), from where /usr/bin/xscreensaver (f2) was launched. f1 is now /etc/xdg/xfce4/xinitrc (f3), but f2 is not run from f3.

I do
Code:


root@darkstar:/etc# grep -irl xscreensaver *
X11/app-defaults/XScreenSaver
xdg/autostart/xscreensaver.desktop
xdg/menus/xfce-settings-manager.menu
root@darkstar:/etc#

but none of these files is a shell script. E.g., XScreenSaver is a configuration file, in spite of its title (the OS installer did not put any .xinitrc in ~/). ps shows that f2 is running while I am in the GUI. There must be some executable, either binary or written for an interpreter who starts f2. But where is it? That would be the question.

cendryon 01-17-2013 07:57 AM

Hi

That would be
Code:

xdg/autostart/xscreensaver.desktop
It is not a shell script, it is a Desktop Entry file (text file). The "Exec=" line states what to run.

As its path suggests, it is started automatically when you log in XDG-compliant DE like XFCE and KDE (see Desktop Application Autostart Specification). You could think of it as working like the "Startup" folder of Windows' Start menu.
System-wide settings (à la Windows' "All users") are in
Code:

/etc/xdg/autostart
User-specific settings are in
Code:

~/.config/autostart
User-specific settings for KDE only are in
Code:

~/.kde/Autostart
Cheers

stf92 01-17-2013 02:57 PM

Thank you. If I do 'less /etc/xdg/autostart/screensaver.desktop, I find a lot of unprintable characters, besides the following:
Code:

Icon=preferences-desktop-screensaver
Exec=xscreensaver -no-splash
TryExec=xscreensaver
OnlyShowIn=XFCE;

You'll see. Choosing a black screen as screen saver in the GUI, makes the GUI to make very strange things. In 12.0 I a similar problem, but then I simply commented out the line launching xscreensaver. I guess commenting out the Exec and TryExec lines would do the trick?
Without knowing all this, I had a feeling that things were done each time more like in Windows!?

Are the unprintable caracters unicode chararctes?

cendryon 01-17-2013 04:54 PM

Hi

I run KDE, not XFCE.
Yet, this How to disable xfce screensaver points us in the right direction.

According to the "important note" near the end of /etc/xdg/xfce4/xinitrc, the content of /etc/xdg/autostart is considered only if your are not using Xfce's session manager (xfce4-session).
If you actually use xfce4-session, and you certainly do if you didn't mangled your user's .xinitrc (better use xwmconfig as root to set XFCE as the system-wide DE default), you don't need to bother with the content of /etc/xdg/autostart.

Instead, start XFCE and just run xfce4-settings-manager to disable screensaver (see Xfce 4 Screensaver Settings for instance).

Lastly, yes, the unprintable characters are Unicode: "Name[xy]=" and "Comment[xy]=" are localized strings of "Name=" and "Comment=", where xy is a language code.

Cheers

stf92 01-17-2013 05:38 PM

That is the great "Why": /etc/xdg/xfce4/xinitrc has the execute bit off. The installer did this!

About disabling from the GUI, it hanged the GUI in 12.0 and still has problems in 14.0. As nobody does this, disabling the screen saver, few people notices the disastrous effect. The effect in 14.0 is I am left without the window manager.

ljb643 01-17-2013 06:46 PM

Quote:

Originally Posted by stf92 (Post 4872515)
That is the great "Why": /etc/xdg/xfce4/xinitrc has the execute bit off. The installer did this! ...

This is a "desktop" file, not a program or script, and the execute bit is not relevant. Think of it as a data file for the Xfce desktop system. It doesn't get executed - it is read by Xfce as data.

stf92 01-17-2013 07:39 PM

No Sir. It begins '#!/bin/sh'. The xinitrc file was never anything but a shell script executable file. So the question remains: why this file has the 'x' bit off.

cendryon 01-18-2013 01:15 AM

Hi

Follow the trail:
Code:

/usr/X11/xinit/xinitrc.xfce
calls
Code:

/usr/bin/startxfce4
which reads, not execute
Code:

/etc/xdg/xfce4/xinitrc
so no need to set its executable bit.

Cheers

stf92 01-18-2013 01:47 AM

In /etc/xdg/xfce4/xinitrc, the last line is

'exec $prog /etc/xdg/xfce4/xinitrc $CLIENTRC $SERVERRC'.

$prog = '/bin/sh' here. And $CLIENTRC, $SERVERRC are just options. So /bin/sh executes /etc/xdg/xfce4/xinitrc.

Suppose not. But /etc/xdg/xfce4/xinitrc is a shell script:
Code:

semoi@darkstar:~$ head -n15 /etc/xdg/xfce4/xinitrc
#!/bin/sh

# fix broken $UID on some system...
if test "x$UID" = "x"; then
  if test -x /usr/xpg4/bin/id; then
    UID=`/usr/xpg4/bin/id -u`;
  else
    UID=`id -u`;
  fi
fi

# set $XDG_MENU_PREFIX to "xfce-" so that "xfce-applications.menu" is picked
# over "applications.menu" in all Xfce applications.
if test "x$XDG_MENU_PREFIX" = "x"; then
  XDG_MENU_PREFIX="xfce-"
semoi@darkstar:~$

A contradiction.

ljb643 01-18-2013 04:54 PM

Quote:

Originally Posted by stf92 (Post 4872554)
No Sir. It begins '#!/bin/sh'. The xinitrc file was never anything but a shell script executable file. So the question remains: why this file has the 'x' bit off.

Sorry, my mistake. I skipped over some stuff and thought we were talking about the autostart file.


All times are GMT -5. The time now is 09:02 AM.