koreader: fix that "isOnline" check was failing and preventing FTP access
This commit is contained in:
parent
bed33fae60
commit
023e28fb03
|
@ -12,7 +12,7 @@
|
|||
./jellyfin-media-player.nix
|
||||
./kitty
|
||||
./komikku.nix
|
||||
./koreader.nix
|
||||
./koreader
|
||||
./libreoffice.nix
|
||||
./mpv.nix
|
||||
./neovim.nix
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
sane.programs.koreader = {
|
||||
# koreader on aarch64 errors if there's no fonts directory (sandboxing thing, i guess)
|
||||
fs.".local/share/fonts".dir = {};
|
||||
# history, cache, dictionaries...
|
||||
# could be more explicit if i symlinked the history.lua file to somewhere it can persist better.
|
||||
persist.plaintext = [ ".config/koreader" ];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
-- as of 2023.05.1, koreader FTP browser always fails to load.
|
||||
-- it's convinced that it's offline, and asks to connect to wifi.
|
||||
-- this seems to be because of the following in <frontend/device/sdl/device.lua>:
|
||||
--
|
||||
-- function Device:initNetworkManager(NetworkMgr)
|
||||
-- function NetworkMgr:isWifiOn() return true end
|
||||
-- function NetworkMgr:isConnected()
|
||||
-- -- Pull the default gateway first, so we don't even try to ping anything if there isn't one...
|
||||
-- local default_gw = Device:getDefaultRoute()
|
||||
-- if not default_gw then
|
||||
-- return false
|
||||
-- end
|
||||
-- return 0 == os.execute("ping -c1 -w2 " .. default_gw .. " > /dev/null")
|
||||
-- end
|
||||
-- end
|
||||
--
|
||||
-- specifically, `os.execute` is not *expected* to return 0. it returns `true` on success:
|
||||
-- <https://www.lua.org/manual/5.3/manual.html#pdf-os.execute>
|
||||
-- this apparently changed from 5.1 -> 5.2
|
||||
|
||||
local logger = require("logger")
|
||||
logger.info("applying colin patch")
|
||||
|
||||
local Device = require("device")
|
||||
logger.info("Device:" .. tostring(Device))
|
||||
|
||||
local orig_initNetworkManager = Device.initNetworkManager
|
||||
Device.initNetworkManager = function(self, NetworkMgr)
|
||||
logger.info("Device:initNetworkManager")
|
||||
orig_initNetworkManager(self, NetworkMgr)
|
||||
function NetworkMgr:isConnected()
|
||||
logger.info("mocked `NetworkMgr:isConnected` to return true")
|
||||
return true
|
||||
-- unpatch to show that the boolean form works
|
||||
-- local rc = os.execute("ping -c1 -w2 10.78.79.1 > /dev/null")
|
||||
-- logger.info("ping rc: " .. tostring(rc))
|
||||
-- return rc
|
||||
end
|
||||
end
|
18
hosts/common/programs/koreader/default.nix
Normal file
18
hosts/common/programs/koreader/default.nix
Normal file
|
@ -0,0 +1,18 @@
|
|||
{ ... }:
|
||||
|
||||
{
|
||||
sane.programs.koreader = {
|
||||
# koreader applies these lua "patches" at boot:
|
||||
# - <https://github.com/koreader/koreader/wiki/User-patches>
|
||||
# - TODO: upstream this patch to koreader
|
||||
# fs.".config/koreader/patches".symlink.target = "${./.}";
|
||||
fs.".config/koreader/patches/2-colin-NetworkManager-isConnected.lua".symlink.target = "${./2-colin-NetworkManager-isConnected.lua}";
|
||||
|
||||
# koreader on aarch64 errors if there's no fonts directory (sandboxing thing, i guess)
|
||||
fs.".local/share/fonts".dir = {};
|
||||
|
||||
# history, cache, dictionaries...
|
||||
# could be more explicit if i symlinked the history.lua file to somewhere it can persist better.
|
||||
persist.plaintext = [ ".config/koreader" ];
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue
Block a user