Page 2 of 9

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

Posted: Sun Apr 01, 2018 1:57 pm
by tsdima
0CodErr wrote:Можно сравнить как сделано в KlbrInWin.
Во первых, у меня нет исходников KlbrInWin, а во-вторых, знать бы что сравнивать...

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

Posted: Sun Apr 01, 2018 3:55 pm
by Leency
JohnXenox
Все дело в регистрозависимости файловых систем в линупсе.
/sys/settings/ не находит, т.к. у тебя /sys/SETTINGS/

Попробуй последнюю сборку.

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

Posted: Sun Apr 01, 2018 7:30 pm
by JohnXenox
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 можно, но что будет на практике - пока не знаю.
Ясно.

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

Posted: Sun Apr 01, 2018 7:35 pm
by JohnXenox
tsdima wrote:По поводу растягивания окон, хотелось бы узнать версию Линукса и тип оконного менеджера.
Linux Mint 18.2 Sonya XFCE + Compton

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

Posted: Sun Apr 01, 2018 9:18 pm
by JohnXenox
Leency wrote:JohnXenox
Все дело в регистрозависимости файловых систем в линупсе.
/sys/settings/ не находит, т.к. у тебя /sys/SETTINGS/

Попробуй последнюю сборку.
Попробовал. По совету tsdima, создал ссылку. Со ссылкой работает правильно. Без ссылки всё также.

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

Posted: Sun Apr 01, 2018 9:37 pm
by tsdima
Leency wrote:Попробуй последнюю сборку.
Не надо ничего менять исключительно для эмулятора. Наоборот, надо менять эмулятор, чтобы он соответствовал ядру.

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

Posted: Sun Apr 01, 2018 9:49 pm
by JohnXenox
Для удобства работы с эмулятором, набросал небольшой скрипт.
Скрипт сначала проверяет, есть ли в папке образ 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.

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

Posted: Mon Apr 02, 2018 1:19 pm
by Leency
tsdima
Да, но иногда файлы Колибри лежат на линукс разделах.

Есть такой баг в @open http://bugs.kolibri-n.org/?id=11
Он ждет своего ассемблерщика-линуксоида.

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

Posted: Mon Apr 02, 2018 1:57 pm
by 0CodErr
Leency wrote:Есть такой баг в @open http://bugs.kolibri-n.org/?id=11
О регистрозависимости нужно договариваться на уровне системы.
Сейчас программы работают с файловой системой как с регистроНЕзависимой.
Потому что в FAT это так. И до относительно недавнего времени EXT вообще толком не поддерживался.

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

Posted: Mon Apr 02, 2018 2:59 pm
by tsdima
Сделал в эмуляторе регистронезависимый поиск.

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

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

Posted: Mon Apr 02, 2018 5:06 pm
by Leency
> И до относительно недавнего времени EXT вообще толком не поддерживался.
Уже 100 лет как поддерживается, это запись недавно сделали, и то это было года 3 наверное назад.

Баг с @open есть баг. Пользователю пофиг о чем мы там договорились или нет, когда он в файловом менеджере не может открыть файл у него бомбит.

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

Posted: Mon Apr 02, 2018 5:16 pm
by JohnXenox
tsdima wrote:Сделал в эмуляторе регистронезависимый поиск.

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

Также заметил, что в окнах, где есть сколлбар, скроллинг колёсиком не работает. Или работает неправильно.

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

Posted: Mon Apr 02, 2018 5:40 pm
by 0CodErr
Leency wrote:Баг с @open есть баг. Пользователю пофиг о чем мы там договорились или нет, когда он в файловом менеджере не может открыть файл у него бомбит.
Вот я и говорю
0CodErr wrote:О регистрозависимости нужно договариваться на уровне системы.
Откуда твой @open может знать про CaseSensitive файловой системы раздела, с которым он работает?
Подумай для начала, как будут(и как должны) вести себя SysFn70.2 и SysFn70.3 в случае применения к файлам "MyFile" и "myfile", если искомый файл существует и если он не существует.

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

Posted: Mon Apr 02, 2018 6:00 pm
by tsdima
JohnXenox wrote:Окна растягиваются и максимизируются только при взаимодействии с частями родной темы Linux
Ясно, будем копать хинты для XFCE. Хотя надежды мало.
JohnXenox wrote:При взаимодействии со скином Колибри, всё также, максимизация и растягивание не работает.
Я надеялся, что за изменение размера будет отвечать Linux. Не хотелось бы для разных оконных менеджеров свои костыли ставить.
А про двойной клик на заголовке - это я просмотрел, надо будет сделать максимизацию.
JohnXenox wrote:Также заметил, что в окнах, где есть сколлбар, скроллинг колёсиком не работает. Или работает неправильно.
Не работает, не сделано :)

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

Posted: Mon Apr 02, 2018 9:50 pm
by tsdima
Нашёл, что не устраивало fNav. Где-то в дебрях то-ли самого fNav, то-ли libimg, используется 68.20 (heap realloc), однако возвращаемый адрес игнорируется, полагаясь на то, что он не изменится. Понятно, что если размер блока уменьшился, то адрес может остаться тот-же. Но в описании этой функции не говорится, что адрес обязан остаться неизменным, если размер уменьшился. Даже если текущая реализация ядра и делает так.