Coder Social home page Coder Social logo

ingvarx / camelot Goto Github PK

View Code? Open in Web Editor NEW
487.0 22.0 43.0 13.61 MB

Camelot is cross-platform file manager written in C#

Home Page: https://gitter.im/IngvarX-Camelot/community

License: GNU General Public License v3.0

C# 99.81% Shell 0.08% XSLT 0.11%
linux file-manager csharp avalonia windows macos camelot twin-panel csharp-code commander

camelot's People

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

camelot's Issues

Add "Commander" to tags

Spent a lot of time to find Avalonia version of "Total commander" if u add commader to tags it will be easyer

Paste

Interesting in "paste" button or hotkey

If i copy file i wanna paste it in current directory in FilesPanelView

ReadyToRun broke app

dotnet publish -r win-x64 -c Release /p:PublishSingleFile=true /p:PublishTrimmed=true /p:PublishReadyToRun=true

if use this command in netcore 3.1 build fail
if use with 5.0 build sucsess but app not run at all with no messages

FilesPanelView context menu

Interesting in context menu in FilesPanelView with next menu
"Create new file"
"Create new folder"
"Paste"
etc
as in finder

installation: "Access to the path '/usr/share/Camelot/Camelot.db' is denied."

Linux Mint 20.0
running .DEB with GDebi Package Installer
https://termbin.com/xqbg
Note: file mentioned did not appear to have been created.
GDebi prompted for sudo password, and then ran, but failed with below
-----------------------begin CamelotLog-20201219.txt------------------------
2020-12-19 13:56:05.912 -05:00 [Fatal] Unhandled application error: System.UnauthorizedAccessException: Access to the path '/usr/share/Camelot/Camelot.db' is denied.
---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at LiteDB.Engine.FileStreamFactory.GetStream(Boolean canWrite, Boolean sequencial) at LiteDB.Engine.StreamPool.<>c__DisplayClass3_0.<.ctor>b__0() at System.Lazy1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor) at System.Lazy1.CreateValue()
at System.Lazy1.get_Value() at LiteDB.Engine.StreamPool.get_Writer() at LiteDB.Engine.DiskService..ctor(EngineSettings settings, Int32[] memorySegmentSizes) at LiteDB.Engine.LiteEngine..ctor(EngineSettings settings) at LiteDB.SharedEngine.OpenDatabase() at LiteDB.SharedEngine.Query(String collection, Query query) at LiteDB.LiteQueryable1.ToDocuments()+MoveNext()
at System.Linq.Enumerable.SelectEnumerableIterator2.MoveNext() at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable1 source, Boolean& found)
at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable1 source) at LiteDB.LiteCollection1.FindById(BsonValue id)
at Camelot.DataAccess.LiteDb.Repository1.GetById(String id) in /home/ingvar/Code/Camelot/src/Camelot.DataAccess.LiteDb/Repository.cs:line 15 at Camelot.Services.LocalizationService.GetSavedLanguage() in /home/ingvar/Code/Camelot/src/Camelot.Services/LocalizationService.cs:line 23 at Camelot.App.LoadLanguage() in /home/ingvar/Code/Camelot/src/Camelot/App.xaml.cs:line 43 at Camelot.App.Initialize() in /home/ingvar/Code/Camelot/src/Camelot/App.xaml.cs:line 20 at Avalonia.Controls.AppBuilderBase1.Setup()
at Avalonia.Controls.AppBuilderBase`1.SetupWithLifetime(IApplicationLifetime lifetime)
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode)
at Camelot.Program.Main(String[] args) in /home/ingvar/Code/Camelot/src/Camelot/Program.cs:line 32
----------end CamelotLog-20201219.txt--------------

Can't navigate to the parent directory with `Enter`

Application version: v0.2.4
Package type: Single EXE, Windows

Steps to reproduce:

  1. Start the application.
  2. Navigate into the directory.
  3. Highlight [..] ang hit Enter

Expected behavior:

Navigate to a parent directory

Actual behavior:

Nothing happens

Notes:

Mouse double click om [..] works.

Actions within a folder will show duplicated subfolder within the parent folder view until parent view is refreshed

Say I have a directory open in the left pane called folder 1, and it has a subfolder called folder 2. If I have folder 2 open in the right pane and create, delete, or rename any files within folder 2, it will create a duplicate row showing folder 2 within the folder 1 left pane. It creates a new duplicate row for every action taken within folder 2.

So If I perform ten different actions within folder 2, it will show "folder 2" eleven times within the folder 1 view on the left pane. Once I refresh the folder 1 view, it goes back to only showing one row of "folder 2".

Windows 10, v0.3.0.0 SingleExe

The configured user limit (128) on the number of inotify instances has been reached

When the app starts it throws an IOException:

An exception of type 'System.IO.IOException' occurred in System.IO.FileSystem.Watcher.dll but was not handled in user code: 'The configured user limit (128) on the number of inotify instances has been reached, or the per-process limit on the number of open file descriptors has been reached.'

Info:

  • Source: Camelot.FileSystemWatcherWrapper/Implementations/FileSystemWatcherWrapper.cs
  • Line: 29
  • Commit: 3acd8a6
  • OS: Ubuntu 20.04
  • .NET Core Version: 3.1.201

Failed to preview MainWindow.xaml in VS2019

When I'm trying to open XAML preview in VS 2019 with "Avalonia for Visual Studio" extension, I'm getting the following error in output window:

20:58:31.975 [Information] 0 Starting previewer process for '"C:\Projects\!Avalonia\Camelot-master\src\Camelot\bin\Debug\netcoreapp3.1\camelot.dll"' 20:58:31.978 [Information] 23952 Started previewer process for '"C:\Projects\!Avalonia\Camelot-master\src\Camelot\bin\Debug\netcoreapp3.1\camelot.dll"'. Waiting for connection to be initialized. 20:58:32.181 [Information] 23952 Connection initialized 20:58:33.126 [Error] 23952 <= "Unhandled exception. System.InvalidOperationException: Failed to resolve object of type Camelot.Services.Abstractions.IThemeService" 20:58:33.127 [Error] 23952 <= " at Camelot.DependencyInjection.ReadonlyDependencyResolverExtensions.GetRequiredService[TService](IReadonlyDependencyResolver resolver) in C:\Projects\!Avalonia\Camelot-master\src\Camelot\DependencyInjection\ReadonlyDependencyResolverExtensions.cs:line 16" 20:58:33.128 [Error] 23952 <= " at Camelot.App.GetRequiredService[T]() in C:\Projects\!Avalonia\Camelot-master\src\Camelot\App.xaml.cs:line 73" 20:58:33.131 [Error] 23952 <= " at Camelot.App.LoadTheme() in C:\Projects\!Avalonia\Camelot-master\src\Camelot\App.xaml.cs:line 46" 20:58:33.132 [Error] 23952 <= " at Camelot.App.LoadSettings() in C:\Projects\!Avalonia\Camelot-master\src\Camelot\App.xaml.cs:line 40" 20:58:33.133 [Error] 23952 <= " at Camelot.App.Initialize() in C:\Projects\!Avalonia\Camelot-master\src\Camelot\App.xaml.cs:line 21" 20:58:33.135 [Error] 23952 <= " at Avalonia.Controls.AppBuilderBase1.Setup() in //src/Avalonia.Controls/AppBuilderBase.cs:line 311"
20:58:33.136 [Error] 23952 <= " at Avalonia.Controls.AppBuilderBase1.SetupWithoutStarting() in /_/src/Avalonia.Controls/AppBuilderBase.cs:line 168" 20:58:33.139 [Error] 23952 <= " at Avalonia.DesignerSupport.Remote.RemoteDesignerEntryPoint.AppInitializer1.ConfigureApp(IAvaloniaRemoteTransportConnection transport, CommandLineArgs args, Object obj) in /
/src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs:line 155"
20:58:33.140 [Error] 23952 <= " at Avalonia.DesignerSupport.Remote.RemoteDesignerEntryPoint.Main(String[] cmdline) in //src/Avalonia.DesignerSupport/Remote/RemoteDesignerEntryPoint.cs:line 179"
20:58:33.141 [Error] 23952 <= " at Avalonia.Designer.HostApp.Program.Main(String[] args) in /
/src/tools/Avalonia.Designer.HostApp/Program.cs:line 48"
20:58:35.374 [Information] Process exited
20:58:35.375 [Information] Stopping previewer process
20:58:35.374 [Error] Connection error
System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host
at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
at System.IO.Stream.<>c.b__43_1(Stream stream, IAsyncResult asyncResult)
at System.Threading.Tasks.TaskFactory1.FromAsyncTrimPromise1.Complete(TInstance thisRef, Func3 endMethod, IAsyncResult asyncResult, Boolean requiresSynchronization) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Avalonia.Remote.Protocol.BsonStreamTransportConnection.<ReadExact>d__15.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at Avalonia.Remote.Protocol.BsonStreamTransportConnection.<Reader>d__16.MoveNext()
I'm a new in Avalonia. So, maybe I just don't know something about project setup.

Build-ed application cannot start on Windows

It builds successfully on Windows but the application does not start at all. Usind SDK 3.1.201 (x64) on Windows 10 x64 1909.

Btw, very nice project. I hope to see more features added and more modern look like acrylic blurry background with SetWindowCompositionAttribute.

Categories/tags for favorite folders

Introduction

Currently, starring folders and drives are all jumbled in one line and it looks too busy.

image

Proposal


## Apply a line border to favorite folders with specific tag

e.g.

image

I'd love to see the tag name above the highlighted lines, but it would probably counter-balance the minimalistic approach of Camelot.

Apply a small ribbon-like matte-colored lines for tagged folders.

image

For the untagged favorite folders, move them to the far right or left (depending on user option maybe?) with a bit of whitespace to signify its uncategorized state. This could also potentially double down as a way to collapse/expand the tagged folders, probably too much at this stage xd.

Force quit when network folder is inaccessible

My work computer has mapped shared network drives that are only accessible when the work VPN is enabled. Windows Explorer gives an error saying the drive cannot be accessed if opening it is attempted when the VPN is off. When it is attempted in Camelot, the program force quits without any error message.

Windows 10
v0.3.0.0 SingleExe

Default location

When ran for the first time Camelot opens /. It would be better if it opened user's home folder or the location where the program was started from.

Bottom bar improvements

camelot_bottom_bar

A few things could be improved:

  • change hotkey text to less intense color (white with 0.5 opacity looks good)
  • change hotkey text to a bit smaller font (perhaps 16px)
  • different icon for edit button (like the one on the picture)
  • icons are not aligned with text

Add feature list

There are many orthodox file managers out there. I'm looking for one that supports launching external tools to compare files.

Would be informative to list the application features in the README, in addition to the nice screenshots 🙏

Update to new

Need to update new Avalonia. New perfomance
Fix bugs.

update to net5 (single apps..)

Unicode bugs

Unicode characters are not properly shown in the path textbox.
image
Like this, the directory name is properly shown in the tab title, but the path box is not.

Missing appsettings.json after clean git clone

If you simply clone the repository and execute:

git clone https://github.com/ingvar1995/Camelot.git
cd Camelot
dotnet restore
dotnet build
dotnet run --project src/Camelot/Camelot.csproj

IT will result in a FileNotFoundException

Unhandled exception. System.IO.FileNotFoundException: The configuration file 'appsettings.json' was not found and is not optional

If however you

cd src/Camelot
dotnet run

there is no Exception.

Info:

  • Commit: 3acd8a6
  • OS: Ubuntu 20.04
  • .NET Core Version: 3.1.201

.NET 7

I was able to build with .NET 7, but then when launching it fails:

$ dotnet run --project src/Camelot/Camelot.csproj
You must install or update .NET to run this application.
...
Framework: 'Microsoft.NETCore.App', version '6.0.0' (arm64)
...
The following frameworks were found:
  7.0.4 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  7.0.5 at [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

Obviously, I can install 6, but I wanted to see if there is any interest in upgrading to 7, the current/stable version.

Design for progress bar and notification area

Operation in progress:
camelot-progress-bar-in-progress
camelot-progress-bar-in-progress2

Operation complete:
camelot-progress-bar-complete

Operation failed:
camelot-progress-bar-failed

Colors:
success: rgb(53, 163, 53)
success text: rgba(188, 255, 188, 0.8)
error: rgb(163, 66, 53)
error text: rgba(255, 188, 188, 0.8)
circular progress bar background: rgba(255, 255, 255, 0.15)
notification area background: #1f1e1a
notification area shadow: black
progress bar background: rgba(255, 255, 255, 0.1)
progress text (MB copied etc.): rgba(255, 255, 255, 0.6)
cancel operation button: rgba(255, 255, 255, 0.7)

circular progress bar text font size: 14px
notificaiton area font size: 16px
progress text font size: 14px

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.