コード例 #1
0
ファイル: main.cpp プロジェクト: KDE/kde-workspace
  Q_DECL_EXPORT void kcminit_mouse()
  {
      KConfig *config = new KConfig("kcminputrc", KConfig::NoGlobals );
    MouseSettings settings;
    settings.load(config);
    settings.apply(true); // force

#ifdef HAVE_XCURSOR
    KConfigGroup group = config->group("Mouse");
    QString theme = group.readEntry("cursorTheme", QString());
    QString size = group.readEntry("cursorSize", QString());

    // Note: If you update this code, update kapplymousetheme as well.

    // use a default value for theme only if it's not configured at all, not even in X resources
    if( theme.isEmpty()
        && QByteArray( XGetDefault( QX11Info::display(), "Xcursor", "theme" )).isEmpty()
        && QByteArray( XcursorGetTheme( QX11Info::display())).isEmpty())
    {
        theme = "default";
    }

     // Apply the KDE cursor theme to ourselves
    if( !theme.isEmpty())
        XcursorSetTheme(QX11Info::display(), QFile::encodeName(theme));

    if (!size.isEmpty())
    	XcursorSetDefaultSize(QX11Info::display(), size.toUInt());

    // Load the default cursor from the theme and apply it to the root window.
    Cursor handle = XcursorLibraryLoadCursor(QX11Info::display(), "left_ptr");
    XDefineCursor(QX11Info::display(), QX11Info::appRootWindow(), handle);
    XFreeCursor(QX11Info::display(), handle); // Don't leak the cursor

    // Tell klauncher to set the XCURSOR_THEME and XCURSOR_SIZE environment
    // variables when launching applications.
    OrgKdeKLauncherInterface klauncher(QStringLiteral("org.kde.klauncher5"),
                                       QStringLiteral("/KLauncher"),
                                       QDBusConnection::sessionBus());
    if(!theme.isEmpty())
        klauncher.setLaunchEnv(QStringLiteral("XCURSOR_THEME"), theme);
    if( !size.isEmpty())
        klauncher.setLaunchEnv(QStringLiteral("XCURSOR_SIZE"), size);

#endif

    delete config;
  }
コード例 #2
0
ファイル: main.cpp プロジェクト: CerebrosuS/plasma-desktop
  Q_DECL_EXPORT void kcminit_mouse()
  {
      KConfig *config = new KConfig("kcminputrc", KConfig::NoGlobals );

    Display *dpy = nullptr;
    const bool platformX11 = QX11Info::isPlatformX11();
    if (platformX11) {
        dpy = QX11Info::display();
    } else {
        // let's hope we have a compatibility system like Xwayland ready
        dpy = XOpenDisplay(nullptr);
    }

    MouseSettings settings;
    settings.load(config, dpy);
    settings.apply(true); // force

#ifdef HAVE_XCURSOR
    KConfigGroup group = config->group("Mouse");
    QString theme = group.readEntry("cursorTheme", QString());
    QString size = group.readEntry("cursorSize", QString());

    // Note: If you update this code, update kapplymousetheme as well.

    // use a default value for theme only if it's not configured at all, not even in X resources
    if( theme.isEmpty()
        && (!dpy ||
                (QByteArray( XGetDefault( dpy, "Xcursor", "theme" )).isEmpty()
                 && QByteArray( XcursorGetTheme( dpy)).isEmpty())))
    {
        theme = "breeze_cursors";
    }

     // Apply the KDE cursor theme to ourselves
    if (dpy) {
        if( !theme.isEmpty())
            XcursorSetTheme(dpy, QFile::encodeName(theme));

        if (!size.isEmpty())
            XcursorSetDefaultSize(dpy, size.toUInt());

        // Load the default cursor from the theme and apply it to the root window.
        Cursor handle = XcursorLibraryLoadCursor(dpy, "left_ptr");
        XDefineCursor(dpy, QX11Info::appRootWindow(), handle);
        XFreeCursor(dpy, handle); // Don't leak the cursor
    }

    // Tell klauncher to set the XCURSOR_THEME and XCURSOR_SIZE environment
    // variables when launching applications.
    OrgKdeKLauncherInterface klauncher(QStringLiteral("org.kde.klauncher5"),
                                       QStringLiteral("/KLauncher"),
                                       QDBusConnection::sessionBus());
    if(!theme.isEmpty())
        klauncher.setLaunchEnv(QStringLiteral("XCURSOR_THEME"), theme);
    if( !size.isEmpty())
        klauncher.setLaunchEnv(QStringLiteral("XCURSOR_SIZE"), size);

#endif

    if (!platformX11) {
        XFlush(dpy);
        XCloseDisplay(dpy);
    }

    delete config;
  }