summaryrefslogtreecommitdiffstats
path: root/perl-install/share/list.ppc
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/share/list.ppc')
-rw-r--r--perl-install/share/list.ppc3
1 files changed, 3 insertions, 0 deletions
diff --git a/perl-install/share/list.ppc b/perl-install/share/list.ppc
index 29669351b..dc03e937c 100644
--- a/perl-install/share/list.ppc
+++ b/perl-install/share/list.ppc
@@ -1,2 +1,5 @@
/usr/X11R6/bin/XF68_FBDev
+/usr/X11R6/bin/Xpmac
/usr/X11R6/bin/xmodmap
+/usr/bin/hformat
+/sbin/pdisk
id='n222' href='#n222'>222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from PyQt5.QtGui import QGuiApplication, QIcon, QScreen
from PyQt5.QtQuick import QQuickView
from PyQt5.QtCore import QUrl, QLocale, QTranslator, QLibraryInfo,  QVariant, QAbstractListModel, \
    QModelIndex, Qt, QObject, pyqtSlot, pyqtSignal, QCoreApplication
from PyQt5.QtNetwork import QNetworkConfigurationManager, QNetworkConfiguration
import sys
import os
import subprocess
from helpers import get_desktop_name, get_desktop_name2, is_installed
import pwd
# Workaround for opengl lib selection
from OpenGL import GL

translate = QCoreApplication.translate

class ConfList(QAbstractListModel):
    NameRole = Qt.UserRole + 1
    def __init__(self, parent=None):
        super().__init__(parent)
        # Changing working directory
        abspath = os.path.abspath(__file__)
        dname = os.path.dirname(abspath)
        os.chdir(dname)

        #collect sys info
        release = subprocess.getoutput('lsb_release -sd')
        release = release[1:-1]
        release_nb = subprocess.getoutput('lsb_release -sr')
        release_nb = release_nb.strip()
        kernel = subprocess.getoutput('uname -r')
        if os.uname()[4] == 'x86_64':
          arch = '64-bit'
        elif os.uname()[4] == 'i586':
          arch = '32-bit'
        else:
            arch = os.uname()[4]
        try:
            desktop = get_desktop_name(os.path.basename(os.getenv("DESKTOP_SESSION")))
        except:
            desktop = 'Other'

        if desktop == 'Other':
          desktop = get_desktop_name2(os.getenv("XDG_CURRENT_DESKTOP"))
          if desktop == 'unknown':
              desktop = os.getenv("XDG_CURRENT_DESKTOP")
        self.screen_factor = 0.0
        if desktop == 'Gnome Wayland':            
            import gi
            gi.require_version('Gdk', '3.0')
            from gi.repository.Gdk import Display
            # pre-3.22, otherwise deprecated
            #factor = Gdk.Screen.get_default().get_monitor_scale_factor(0)
            self.screen_factor = Display.get_default().get_monitor(0).get_scale_factor()

        # Search active network connections
        net = QNetworkConfigurationManager()
        first = True
        if net.isOnline():
              confs = net.allConfigurations(QNetworkConfiguration.Active)
              for conf in confs:
                  if first:
                      netconfs = conf.name()
                      first = False
                  else:
                      netconfs += ", " + conf.name()

        self.configuration = [
            {'name': translate('ConfList',"<b>Congratulations!</b><BR />You are now running {}").format(release)},
            {'name': translate('ConfList',"You are using linux kernel: {}").format(kernel)},
            {'name': translate('ConfList',"Your system architecture is: {}").format(arch)},
            {'name': translate('ConfList',"You are now using the Desktop: {}").format(desktop)},
            {'name': translate('ConfList',"Your user id is: {}").format(os.getuid())},
        ]
        if net.isOnline():
            self.configuration.append({'name': translate('ConfList',"You are connected to a network through {}").format(netconfs)})
        else:
            self.configuration.append({'name': translate('ConfList',"You have no network connection")})

    def factor(self, app):
        '''
        Determine screen factor
        Can be specific for Gnome Wayland
        '''
        if self.screen_factor == 0 :
            screen = app.primaryScreen()
            self.screen_factor = screen.devicePixelRatio()
        return self.screen_factor

    def data(self, index, role=Qt.DisplayRole):
        row = index.row()
        return self.configuration[row]["name"]

    def rowCount(self, parent=QModelIndex()):
        return len(self.configuration)

    def roleNames(self):
        return {
            ConfList.NameRole: b'name',
        }

class Callbrowser(QObject):
    def __init__(self):
        QObject.__init__(self)

    @pyqtSlot(str)
    def weblink(self, link):
        subprocess.Popen(["xdg-open", link])

class Launcher(QObject):
    installed = pyqtSignal()
    needed = pyqtSignal(str, arguments=['repo'])
    repo = pyqtSignal()
    noprogram = pyqtSignal()

    def __init__(self):
        QObject.__init__(self)

    @pyqtSlot(QVariant)
    def command(self, app):
        if app.isArray():
            cmd = []
            for i in range(0,app.property("length").toInt()):
                cmd.append(app.property(i).toString())
            try:
                subprocess.Popen(cmd)
            except:
                print(f"Exception running {cmd[0]}" )
                self.noprogram.emit()
                return

    @pyqtSlot(QVariant)
    def install(self, app):
        if app.isArray():
                cmd = []
                # app should contain package, repository
                for i in range(0,app.property("length").toInt()):
                    cmd.append(app.property(i).toString())
                repo = cmd[1]
                # Check if repositories are enabled
                core = False
                updates = False
                tainted = False
                t_updates = False
                nonfree = False
                nf_updates = False
                core32 = False
                core32_updates = False
                try:
                    active = subprocess.run(['urpmq','--list-media','active'], capture_output=True, text=True)
                    active.check_returncode()                        
                except subprocess.CalledProcessError:
                    print("Error with urpmq")
                    return
                for line in active.stdout.splitlines():
                    if line.startswith('Core Release'):
                        core = True
                    if line.startswith('Core Updates'):
                        updates = True
                    if line.startswith('Tainted Release'):
                        tainted = True
                    if line.startswith('Tainted Updates'):
                        t_updates = True
                    if line.startswith('Nonfree Release'):
                        nonfree = True
                    if line.startswith('Nonfree Updates'):
                        nf_updates = True
                    if line.startswith('Core 32bit Release'):
                        core32 = True
                    if line.startswith('Core 32bit Updates'):
                        core32_updates = True
                if repo == 'tainted' and not (tainted and t_updates) :
                    #   repo tainted not enabled
                    self.needed.emit(repo)
                    return
                if repo == 'non-free' and not (nonfree and nf_updates) :
                    #   repo nonfree not enabled
                    self.needed.emit(repo)
                    return
                if repo == 'steam' and not (core32 and core32_updates and nonfree and nf_updates) :
                    #   repo not enabled
                    self.needed.emit(repo)
                    return
                if repo == '' and not (core and updates) :
                    #   repo not enabled
                    self.repo.emit()
                    return
                proc = subprocess.Popen(['/usr/bin/gurpmi',cmd[0]])
                proc.wait()
                # Give the signal to reload the applist
                self.installed.emit()
                return

class Norun(QObject):
    def __init__(self):
        QObject.__init__(self)
        self.home = os.getenv("HOME")
        self.conffile = self.home + "/.config/mageiawelcome/norun.flag"

    @pyqtSlot(bool)