Эмулятор под Linux

Running Kolibri and its programs in other OSes
  • JohnXenox
    Все дело в регистрозависимости файловых систем в линупсе.
    /sys/settings/ не находит, т.к. у тебя /sys/SETTINGS/

    Попробуй последнюю сборку.
    Из хаоса в космос
  • tsdima wrote:Да, забыл сказать, есть такая проблема. Однако если не копировать файлы из образа, а прямо смонтировать его в ~/.kex/root/RD/1, то этой проблемы не заметно (я кстати не знал, что если смонтировать образ c FAT, то обращение к файлам станет регистронезависимым).
    Спасибо, тоже не знал.
    tsdima wrote:Я открываю образы "Disk Image Mounter"-ом, они монтируются в /media, а в каталоге ~/.kex/root/RD/ я сделал линк на каталог в /media (1 -> /media/user/KOLIBRI). Образы монтируются только для чтения, но это вроде не проблема, можно создать каталог /RD/2 и там файлы сохранять.
    Тоже пользуюсь этой программой. Ей можно и на запись монтировать. Я себе уже сделал.
    tsdima wrote:Проблема с иконками и game center скорее всего тоже из-за чувствительности к регистру.
    Да, так и есть.
    tsdima wrote:На данный момент короткие имена приводятся к верхнему регистру, а длинные, типа RasterWorks.obj оставляю как есть. Но по-хорошему, надо бы считывать каталог и искать имя без учёта регистра и потом использовать то, что найдено. Только мне кажется, это будет замедлять работу.
    Да, возможно.
    tsdima wrote:С fNav да, какая-то непонятная хрень, вроде бы используются только реализованные функции, и вроде бы я их полностью реализовал. Но не работает. Жаль исходников fNav нет.
    Не работают программы, которые используют fs: (в основном Си-шные) и gs: (три игрушки от codemaster-а). Пока не знаю, решаемо ли. Использовать rdfsbase/wrfsbase можно, но что будет на практике - пока не знаю.
    Ясно.
    The Glass is Always Half Full! :mrgreen:
  • tsdima wrote:По поводу растягивания окон, хотелось бы узнать версию Линукса и тип оконного менеджера.
    Linux Mint 18.2 Sonya XFCE + Compton
    The Glass is Always Half Full! :mrgreen:
  • Leency wrote:JohnXenox
    Все дело в регистрозависимости файловых систем в линупсе.
    /sys/settings/ не находит, т.к. у тебя /sys/SETTINGS/

    Попробуй последнюю сборку.
    Попробовал. По совету tsdima, создал ссылку. Со ссылкой работает правильно. Без ссылки всё также.
    The Glass is Always Half Full! :mrgreen:
  • Leency wrote:Попробуй последнюю сборку.
    Не надо ничего менять исключительно для эмулятора. Наоборот, надо менять эмулятор, чтобы он соответствовал ядру.
  • Для удобства работы с эмулятором, набросал небольшой скрипт.
    Скрипт сначала проверяет, есть ли в папке образ kolibri.img, если нет, то скачивает по сети, а затем монтирует образ, и создаёт ссылку, если её нет, на смонтированный образ.
    Образ монтируется с правами на запись.

    Вот скрипт, mount.sh:
    Spoiler:

    Code: Select all

    #!/bin/bash
    
    # =============================================================================== #
    # Description:                                                                    #
    # mount.sh - bash script, that downloads the kolibri.img, mounts it and creates   #
    #            a link to the mounted image.                                         #
    # Usage:                                                                          #
    # ./mount.sh - to mount the image.                                                #
    # =============================================================================== #
    # ----------------------------------------------                                  #
    # Bash script mount.sh was written by JohnXenox.                                  #
    # ----------------------------------------------                                  #
    # GNU GPLv2.                                                                      #
    # =============================================================================== #
    
    ## definition of a package manager.
    if which apt-get &> /dev/null; then
      echo 'Package manager is apt-get!'
      install_the_package='apt-get -y install'
    elif which pacman &> /dev/null; then
      echo 'Package manager is pacman!'
      install_the_package='pacman -S --noconfirm'
    elif which yum &> /dev/null; then
      echo 'Package manager is yum!'
      install_the_package='yum -y install'
    elif which zypper &> /dev/null; then
      echo 'Package manager is zypper!'
      install_the_package='zypper -n install -y -l'
    elif which emerge &> /dev/null; then
      echo 'Package manager is emerge!'
      install_the_package='emerge'
    else
      echo "I can't find your package manager!"
      exit 1
    fi
    
    
    ## installing the archiver.
    function install_the_archiver {
      if ! which 7z &> /dev/null; then
        echo -n 'Installing the archiver: '
        install_the_package p7zip-full &> /dev/null
        if test $? -eq 0; then
          echo -e 'successfully!'
        else
          echo -e 'unsuccessfully!'
          exit 1
        fi
      fi
    }
    
    
    ### installing the gnome-disk-image-mounter.
    function install_the_mounter {
      if ! which gnome-disk-image-mounter &> /dev/null; then
        echo -n 'Installing the gnome-disk-image-mounter: '
        install_the_package gnome-disk-utility &> /dev/null
        if test $? -eq 0; then
          echo -e 'successfully!'
        else
          echo -e 'unsuccessfully!'
          exit 1
        fi
      fi
    }
    
    
    ## installing the wget.
    function install_the_wget {
      if ! which wget &> /dev/null; then
        echo -n 'Installing the wget: '
        install_the_package wget &> /dev/null
        if test $? -eq 0; then
          echo -e 'successfully!'
        else
          echo -e 'unsuccessfully!'
          exit 1
        fi
      fi
    }
    
    
    ## installing the image.
    function install_the_image {
        echo -n 'Downloading the image: '
        wget http://builds.kolibrios.org/eng/latest-img.7z &> /dev/null && 7z x latest-img.7z &> /dev/null && rm latest-img.7z &> /dev/null
        if test $? -eq 0; then
          echo -e 'successfully!'
        else
          echo -e 'unsuccessfully!'
          exit 1
        fi
    }
    
    
    ## installing the kolibri.img.
    if ! test -e kolibri.img &> /dev/null; then
      sudo apt-get &> /dev/null
      echo -n 'Checking the internet connection: '
      if ping -c 1 8.8.8.8 &> /dev/null; then
        echo -e 'established!'
        install_the_archiver
        install_the_mounter
        install_the_wget
        install_the_image
      else
        echo -e 'not established!'
        exit 1
      fi
    fi
    
    
    ## mounting the image.
    export NO_AT_BRIDGE=1 # disables dbus is accessibility feature.
    echo -n 'Mounting the image: '
    gnome-disk-image-mounter --writable kolibri.img
    export NO_AT_BRIDGE=0 # enables dbus is accessibility feature.
    if test $? -eq 0; then
      echo -e 'successfully!'
    else
      echo -e 'unsuccessfully!'
      exit 1
    fi
    
    
    ## removing the derictory, if it present.
    #if test -d ~/.kex/root/RD/1; then
    #  rm -r ~/.kex/root/RD/1
    #fi
    
    
    ## creating a link.
    if ! test -L ~/.kex/root/RD/1; then
      echo -n 'Creating a link: '
      ln -s /media/${USER}/KOLIBRI/ ~/.kex/root/RD/1
      if test $? -eq 0; then
        echo -e 'successfully!'
      else
        echo -e 'unsuccessfully!'
        exit 1
      fi  
    fi
    
    exit
    
    mount.sh надо бросить в папку .kex.
    Выставить права на исполнение:

    Code: Select all

    chmod u+x mount.sh
    Запускать можно двойным кликом по скрипту, либо введя в терминал ./mount.sh.
    Last edited by JohnXenox on Sun Apr 15, 2018 3:38 am, edited 1 time in total.
    The Glass is Always Half Full! :mrgreen:
  • tsdima
    Да, но иногда файлы Колибри лежат на линукс разделах.

    Есть такой баг в @open http://bugs.kolibri-n.org/?id=11
    Он ждет своего ассемблерщика-линуксоида.
    Из хаоса в космос
  • Leency wrote:Есть такой баг в @open http://bugs.kolibri-n.org/?id=11
    О регистрозависимости нужно договариваться на уровне системы.
    Сейчас программы работают с файловой системой как с регистроНЕзависимой.
    Потому что в FAT это так. И до относительно недавнего времени EXT вообще толком не поддерживался.
  • Сделал в эмуляторе регистронезависимый поиск.

    По поводу XFCE: JohnXenox, а если закомментировать в k_gui.c вызов SetNoBorder, то окна нормально растягиваются? Будет, конечно, лишний линуксовый заголовок, но мне интересно, от этого ли проблема.
  • > И до относительно недавнего времени EXT вообще толком не поддерживался.
    Уже 100 лет как поддерживается, это запись недавно сделали, и то это было года 3 наверное назад.

    Баг с @open есть баг. Пользователю пофиг о чем мы там договорились или нет, когда он в файловом менеджере не может открыть файл у него бомбит.
    Из хаоса в космос
  • tsdima wrote:Сделал в эмуляторе регистронезависимый поиск.

    По поводу XFCE: JohnXenox, а если закомментировать в k_gui.c вызов SetNoBorder, то окна нормально растягиваются? Будет, конечно, лишний линуксовый заголовок, но мне интересно, от этого ли проблема.
    Скачал, закомментировал и скомпилировал свежий пакет.
    Окна растягиваются и максимизируются только при взаимодействии с частями родной темы Linux (заголовок, боковые части).
    При взаимодействии со скином Колибри, всё также, максимизация и растягивание не работает. При двойном клике по заголовку скина Колибри, окно опускается немного вниз, после чего, стрелка мыши оказывается на заголовке Linux.

    Также заметил, что в окнах, где есть сколлбар, скроллинг колёсиком не работает. Или работает неправильно.
    The Glass is Always Half Full! :mrgreen:
  • Leency wrote:Баг с @open есть баг. Пользователю пофиг о чем мы там договорились или нет, когда он в файловом менеджере не может открыть файл у него бомбит.
    Вот я и говорю
    0CodErr wrote:О регистрозависимости нужно договариваться на уровне системы.
    Откуда твой @open может знать про CaseSensitive файловой системы раздела, с которым он работает?
    Подумай для начала, как будут(и как должны) вести себя SysFn70.2 и SysFn70.3 в случае применения к файлам "MyFile" и "myfile", если искомый файл существует и если он не существует.
  • JohnXenox wrote:Окна растягиваются и максимизируются только при взаимодействии с частями родной темы Linux
    Ясно, будем копать хинты для XFCE. Хотя надежды мало.
    JohnXenox wrote:При взаимодействии со скином Колибри, всё также, максимизация и растягивание не работает.
    Я надеялся, что за изменение размера будет отвечать Linux. Не хотелось бы для разных оконных менеджеров свои костыли ставить.
    А про двойной клик на заголовке - это я просмотрел, надо будет сделать максимизацию.
    JohnXenox wrote:Также заметил, что в окнах, где есть сколлбар, скроллинг колёсиком не работает. Или работает неправильно.
    Не работает, не сделано :)
  • Нашёл, что не устраивало fNav. Где-то в дебрях то-ли самого fNav, то-ли libimg, используется 68.20 (heap realloc), однако возвращаемый адрес игнорируется, полагаясь на то, что он не изменится. Понятно, что если размер блока уменьшился, то адрес может остаться тот-же. Но в описании этой функции не говорится, что адрес обязан остаться неизменным, если размер уменьшился. Даже если текущая реализация ядра и делает так.
  • Who is online

    Users browsing this forum: No registered users and 3 guests