Code Monkey home page Code Monkey logo

slithin's Introduction

Slithin

Icon

CodeFactor Crowdin wakatime

Slithin is a forever free, cross-platform managenment tool for your Remarkable Device. The Story behind Slithin

Installation guide can be found on the Wiki

Slithin is available for Windows, Linux and OSX. The executables are available under Releases or get it from the Microsoft Store.

I am looking for developers who want to join the project. Because I started an apprenticeship in September I cannot afford enough time to work on slithin.

The new version will be fully extendable, that means:

  • Any developer can use the internal slithin services to extend the functionality of slithin
  • An extension could be:
    • custom tool
    • custom cloud provider
    • custom settings sections
    • custom behavior
    • custom context menus
    • custom pages
    • custom submenu-items with custom bound controls

Features

  • Connect your Remarkable Device with WIFI or USB
  • Manage multiple Devices
  • Manage Notebooks/Templates
  • Upload Templates (PNG, JPEG, TIFF, BMP) automaticly after device update
  • Replace Screen Images (PNG, JPEG, TIFF, BMP) or reload default
  • Tools (eg. add pages to PDF, PDF notebook creator)
  • Backup/Restore
  • Backup Single Notebook/Folder
  • Several Mini Tools In Contextmenu (e.g. Empty Trash, Pin/Unpin Notebooks/Folders)
  • Login With SSH Key
  • Reset Screens To Default
  • Small Menu For More Space For Content
  • List/Delete ShareEmail History

In Testing

Planned

  • Screen Share without subscription
  • Share your assets with other users
  • Cloud Connection
  • Dark Mode
  • New Tools:
    • Merge Notebooks
    • Use Shapes on your device
  • Plugin support to enable new cloud providers/tools/etc

This is a beta, so use it on your own risk

Information

The notebooks are saved as it is on the device. On your computer the files are stored in Documents/Slithin. Because of the rewrite of Slithin it is possible to make an smartphone app. So in far future there will be an app available.

Contribution

Everyone is welcome to contribute. I am looking especially for people who can implement the new rM6 format. But other contributions are always welcome.

slithin's People

Contributors

dependabot[bot] avatar furesoft avatar gallimathias avatar jaysonjphillips avatar ralphschuler avatar snyk-bot avatar susch19 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slithin's Issues

Update Loop

Problem:
When Slithin starts an update loop occurs.

Solution:
Compare the Application and the GH Release Version. If it match the problem has to be figured out

[Feature] Allow https://domain.name:port in lieu of IP address

Is your feature request related to a problem? Please describe.
I'm unable to use this application because it does not accept a domain name in the IP field.

Describe the solution you'd like
Implement support to specify a domain name instead of an IP.

Describe alternatives you've considered
No alternatives are possible. If a server is running multiple web services that need access to port 80 or 443, then requests can be rerouted based on the specific domain name used to access that server. A common approach is to redirect web traffic based on the domain name used to access the server. This works without issue for most applications, which do not try to access servers directly by their IP address.

[Bug] Crash on connection

Describe the bug
The app exits when I click connect, but if I connect using SSH CLI or SFTP (filezilla) it works

Desktop (please complete the following information):

  • OS: Windows 11

Can't run consistently

Can't seem to get it to run consistently in Win 10 (x64). Sometimes it just closes after logging in. One time, it started downloading files from the rM2 (2.8.0.98) and then restarted the rM2, then it closed the application, leaving a cmd window open. Haven't gotten to do much testing in earnest.

Install Guide

I've tried a number of ways to install this on Linux and i cannot seem to figure it out.

I would love an install guide and I am sure future users would appreciate one too!

Thank you for this piece of software!

Load Scripts As Tools

Declare ScriptTool
Convert Script To ScriptTool and add to Tools: UI + Utils.Find

Add Market

Add Community "Market" called Sharables.

  • Make Cloud API
  • Integrate API
  • Add UI
  • Add Contextmenu to share items

Feature Request: Save more than one LoginInfo

Problem:
People could have more than one device. It is a mess to reenter all credentials again.

Solution:
Turn the Ip Textbox to a Combobox and add a + button to save new Credentials.
Internal: Load all Credentials from LiteDb and remove the remember Checkbox.

Maybe add this steps to the first dialog to setup Slithin before usage

[Feature] Shape Lib Tool

Generate Shape Lib Notebook

(circle, ellipse, line, rectangle) - filled and solid

import svg paths

Keeps trying to download a Win 64 zip file opens cmd and stops there.

Describe the bug
Upon opening and connecting to Slithin it will attempt to download Windows_x64.zip, complete at 100%. It'd than extract the zip. Once extracted hits 100% the app closes and the CMD pops up. Any time I open Slithin it does this all over again.
To Reproduce
Steps to reproduce the behavior:

  1. Open Slithin
  2. ???
  3. Proift

Expected behavior
to allow the app when it reopens to let me interact with Slithin's features.

Screenshots
Recording: https://screencast-o-matic.com/watch/crQq1rV6ok3

Desktop (please complete the following information):

  • OS: [e.g. iOS] Windows 10

[Bug] Slithin crashes when I want to access the device

Describe the bug

App crashes when I want to connect to my device

A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Install .deb package
  2. start Slithin
  3. enter IP address of my Remarkable 2 on LAN
  4. See error

Expected behavior

Slithin crashes

A clear and concise description of what you expected to happen.

Screenshots

shamot@shamot-XPS-13-7390:~$ Slithin
Unhandled exception. System.ArgumentNullException: Cannot pass null model to Validate. (Parameter 'instanceToValidate')
at FluentValidation.Internal.ExtensionsInternal.Guard(Object obj, String message, String paramName) in /media/jskinner/Linux2/code/FluentValidation/src/FluentValidation/Internal/ExtensionsInternal.cs:line 29
at FluentValidation.AbstractValidator1.EnsureInstanceNotNull(Object instanceToValidate) in /media/jskinner/Linux2/code/FluentValidation/src/FluentValidation/AbstractValidator.cs:line 407 at FluentValidation.AbstractValidator1.Validate(ValidationContext1 context) in /media/jskinner/Linux2/code/FluentValidation/src/FluentValidation/AbstractValidator.cs:line 114 at FluentValidation.AbstractValidator1.Validate(T instance) in /media/jskinner/Linux2/code/FluentValidation/src/FluentValidation/AbstractValidator.cs:line 62
at Slithin.ViewModels.ConnectionWindowViewModel.Connect(Object obj) in D:\a\Slithin\Slithin\Source\Slithin\ViewModels\ConnectWindowViewModel.cs:line 71
at Slithin.Core.DelegateCommand.Execute(Object parameter) in D:\a\Slithin\Slithin\Source\Slithin\Core\DelegateCommand.cs:line 31
at Avalonia.Controls.Button.OnClick() in //src/Avalonia.Controls/Button.cs:line 316
at Avalonia.Controls.Button.RootDefaultKeyDown(Object sender, KeyEventArgs e) in /
/src/Avalonia.Controls/Button.cs:line 552
at Avalonia.Interactivity.EventRoute.RaiseEventImpl(RoutedEventArgs e) in //src/Avalonia.Interactivity/EventRoute.cs:line 152
at Avalonia.Interactivity.EventRoute.RaiseEvent(IInteractive source, RoutedEventArgs e) in /
/src/Avalonia.Interactivity/EventRoute.cs:line 79
at Avalonia.Interactivity.Interactive.RaiseEvent(RoutedEventArgs e) in //src/Avalonia.Interactivity/Interactive.cs:line 123
at Avalonia.Input.KeyboardDevice.ProcessRawEvent(RawInputEventArgs e) in /
/src/Avalonia.Input/KeyboardDevice.cs:line 248
at Avalonia.Input.InputManager.ProcessInput(RawInputEventArgs e) in //src/Avalonia.Input/InputManager.cs:line 37
at Avalonia.X11.X11Window.b__121_0() in /
/src/Avalonia.X11/X11Window.cs:line 740
at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in //src/Avalonia.Base/Threading/JobRunner.cs:line 37
at Avalonia.X11.X11PlatformThreading.HandleX11(CancellationToken cancellationToken) in /
/src/Avalonia.X11/X11PlatformThreading.cs:line 169
at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken) in //src/Avalonia.X11/X11PlatformThreading.cs:line 245
at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /
/src/Avalonia.Base/Threading/Dispatcher.cs:line 65
at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in //src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 132
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /
/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 187
at Slithin.Program.Main(String[] args) in D:\a\Slithin\Slithin\Source\Slithin\Program.cs:line 21
Aborted (core dumped)

Desktop (please complete the following information):

  • OS: Linux Mint 20.3 Cinnamon

[Bug] Fail to connect to RM on Arch

To Reproduce
Steps to reproduce the behavior:

  1. download .deb from latest release, debtap the file, removing icu & openssl (?) dependencies as debtap failed to find matching entry in Arch package db for them
  2. Install package
  3. Open app, config ssh
  4. Press connect
  5. Program quit

I doubt it's related with me removing the dependency? But I do have icu & openssl installed though. Perhaps is a version mismatch?
Btw your install instruction is wrong. https://github.com/furesoft/Slithin/wiki/Installation-Guide says for Arch download the deb package then install with rpm??? I have so many questions.

Unhandled exception. System.IO.DirectoryNotFoundException: Could not find a part of the path '/home/pityhero/Slithin/Devices/rM/.version'.
   at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func`2 errorRewriter)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode)
   at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.OSFileStreamStrategy..ctor(String path, FileMode mode, FileAccess access, FileShare share, FileOptions options, Int64 preallocationSize)
   at System.IO.Strategies.FileStreamHelpers.ChooseStrategy(FileStream fileStream, String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, Int64 preallocationSize)
   at System.IO.StreamWriter.ValidateArgsAndOpenPath(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.File.WriteAllText(String path, String contents)
   at Slithin.Core.Sync.Repositorys.LocalRepository.UpdateVersion(Version version) in D:\a\Slithin\Slithin\Source\Slithin\Core\Sync\Repositorys\LocalRepository.cs:line 95
   at Slithin.ViewModels.Pages.DevicePageViewModel.DoAfterDeviceUpdate() in D:\a\Slithin\Slithin\Source\Slithin\ViewModels\Pages\DevicePageViewModel.cs:line 107
   at Slithin.ViewModels.Pages.DevicePageViewModel.OnLoad() in D:\a\Slithin\Slithin\Source\Slithin\ViewModels\Pages\DevicePageViewModel.cs:line 91
   at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)
   at Avalonia.Threading.AvaloniaSynchronizationContext.<>c__DisplayClass5_0.<Post>b__0() in /_/src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs:line 33
   at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in /_/src/Avalonia.Base/Threading/JobRunner.cs:line 37
   at Avalonia.X11.X11PlatformThreading.HandleX11(CancellationToken cancellationToken) in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 169
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken) in /_/src/Avalonia.X11/X11PlatformThreading.cs:line 245
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in /_/src/Avalonia.Base/Threading/Dispatcher.cs:line 65
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 132
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 187
   at Slithin.Program.Main(String[] args) in D:\a\Slithin\Slithin\Source\Slithin\Program.cs:line 21
[1]    70641 IOT instruction (core dumped)  Slithin

[Bug] "An error occured, see log file" on startup

Describe the bug
When logging to device, the main screen appears, but sync throws an error :

Screenshots
image

Desktop (please complete the following information):

  • OS: Windows 11
  • Intalled from the windows store

Additional context
Please find attached the "log.txt" file from the "Slithin" folder in Documents : log.txt

And indeed, as the log states, there is no ".version" file in the Slithin folder :

image

[Bug] Application error while connecting to device

Describe the bug
I'm getting constant errors while trying to connect to my Remarkable 2.
The application can not even be closed and I need to kill the process.

To Reproduce
Steps to reproduce the behavior:

  1. Start the app
  2. Enter IP and ssh password to connect to my device
  3. I get an error

Screenshots
Screenshot from 2022-02-18 12-31-23

Content of log file:

$ tail -f log.txt
at System.IO.File.Move(String sourceFileName, String destFileName)
at Slithin.Core.Migration.MoveFile(String dir, String newDir, String file) in D:\a\Slithin\Slithin\Source\Slithin\Core\Migration.cs:line 82
at Slithin.Core.Migration.MigrateToNewFolderStructure() in D:\a\Slithin\Slithin\Source\Slithin\Core\Migration.cs:line 49
at Slithin.Core.Migration.b__9_0() in D:\a\Slithin\Slithin\Source\Slithin\Core\Migration.cs:line 36
at Slithin.Core.MessageHandlers.PostActionMessageHandler.HandleMessage(PostActionMessage message) in D:\a\Slithin\Slithin\Source\Slithin\Core\MessageHandlers\PostActionMessageHandler.cs:line 9
at Slithin.Core.MessageRouter.<>c__DisplayClass2_01.<Register>b__0(Object _) in D:\a\Slithin\Slithin\Source\Slithin\Core\MessageRouter.cs:line 24 at Slithin.Core.MessageRouter.Route(Object msg) in D:\a\Slithin\Slithin\Source\Slithin\Core\MessageRouter.cs:line 34 at Slithin.Core.Services.Implementations.MailboxServiceImpl.<Init>b__4_0(MailboxProcessor1 _) in D:\a\Slithin\Slithin\Source\Slithin\Core\Services\Implementations\MailboxServiceImpl.cs:line 28
at Actress.MailboxProcessor1.<Start>g__StartAsync|14_0() 2022-02-18 14:06:06.846 +01:00 [INF] An Error occured. See log file 2022-02-18 14:07:31.526 +01:00 [INF] Initialize Screens 2022-02-18 14:07:31.537 +01:00 [INF] Loading Internal Tools 2022-02-18 14:07:31.827 +01:00 [INF] Downloading Screens 2022-02-18 14:07:33.067 +01:00 [INF] Downloading Templates 2022-02-18 14:07:47.248 +01:00 [INF] Downloading Notebooks 2022-02-18 14:07:47.306 +01:00 [INF] Downloading 0b03acdc-7c71-4598-9984-105268a5f80b.content 0 Bytes/ 4 Bytes 2022-02-18 14:07:47.307 +01:00 [INF] Downloading 0b03acdc-7c71-4598-9984-105268a5f80b.content 4 Bytes/ 4 Bytes 2022-02-18 14:07:47.403 +01:00 [ERR] System.DllNotFoundException: Unable to load shared library 'kernel32.dll' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libkernel32.dll: cannot open shared object file: No such file or directory at DesktopBridge.Helpers.GetCurrentPackageFullName(Int32& packageFullNameLength, StringBuilder packageFullName) at DesktopBridge.Helpers.IsRunningAsUwp() at Slithin.Core.MessageHandlers.CheckForUpdatesMessageHandler.HandleMessage(CheckForUpdateMessage message) in D:\a\Slithin\Slithin\Source\Slithin\Core\MessageHandlers\CheckForUpdatesMessageHandler.cs:line 10 at Slithin.Core.MessageRouter.<>c__DisplayClass2_01.b__0(Object _) in D:\a\Slithin\Slithin\Source\Slithin\Core\MessageRouter.cs:line 24
at Slithin.Core.MessageRouter.Route(Object msg) in D:\a\Slithin\Slithin\Source\Slithin\Core\MessageRouter.cs:line 34
at Slithin.Core.Services.Implementations.MailboxServiceImpl.b__4_0(MailboxProcessor1 _) in D:\a\Slithin\Slithin\Source\Slithin\Core\Services\Implementations\MailboxServiceImpl.cs:line 28 at Actress.MailboxProcessor1.g__StartAsync|14_0()
2022-02-18 14:07:47.403 +01:00 [INF] An Error occured. See log file

Desktop (please complete the following information):

  • OS: Linux Mint 20.3 Cinnamon

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.