cretz / doogie Goto Github PK
View Code? Open in Web Editor NEWA Chromium-based web browser with tree-style pages
Home Page: https://cretz.github.io/doogie
License: MIT License
A Chromium-based web browser with tree-style pages
Home Page: https://cretz.github.io/doogie
License: MIT License
From my minimal research, it appears CEF does not tell us whether a browser is playing audio, so I can't add an audio icon like FF/Chrome do. This might be coming soon
Support abp:subscribe
links from https://filterlists.com/
There's some issue with child window activation or something that makes changing windows out of Doogie stay in Doogie when using Alt+Tab.
Right now, pressing enter does a LoadURL, we need to just navigate to the fragment if the page is not different.
Create installers/packages for popular package managers and OS's and keep them up to date.
See Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=746477
Opening a page in the background or just opening the app w/ some pages stored, you can see that the window is tiny until the first resize is called which makes it big. Not sure if this is a CEF thing or not, but page is often loaded before growing in size.
All I really want to do is get rid of this flicker, but if it's also changing the JS-visible browser dimensions then we need to fix that too.
Unimplemented right now, ref:
Line 5 in 059313b
Right now it's a primitive algorithm to store rules in hash tables. We can reduce this with effort. Right now a large list can cost 50MB+ which is not cool.
Need to implement ourselves because CEF will not do it (not even callbacks).
We'd need to use JS integration for window binding and do the IPC ourselves.
Have all the things there, just need to support it. Consider whether this issue or another will support permanent exceptions (as opposed to just that browser exception).
Need to do regular builds and regular tests. Probably need something like appveyor so we can do UI-based integration tests.
Multiple things here:
Simply support CefGeolocationHandler::OnRequestGeolocationPermission
, not sure we even have to leverage Qt's geolocation utils.
Per this issue and other forum posts, we simply need --ppapi-flash-path
or --enable-system-flash
as a CLI arg. This should be a bubble-level setting.
In some cases (I've had a hard time replicating reliably) on new page, the address bar has a cursor but text cannot be entered.
Leverage the "duplication" feature to do this better.
I have had a vague idea of an improvement upon the traditional browser history model for a little while, and when I came across doogie a moment ago from the HN link you posted, and saw how you implemented workspaces and page suspension, I thought about it some more, and I thought you might find the idea useful in your project. Let me see if I can describe it clearly.
There are a few problems with the current browser history/session/tab model of browsing:
In real life, when reading a book or magazine, etc, if I want to stop reading it and come back to it later, I can mark my place and set it down. The human ability for spatial memory and navigation makes it natural (for some people, at least) to find it again later. In the meantime, to the extent I have physical room, it doesn't occupy resources.
In a browser, if I want to stop reading a page and come back to it later, I can bookmark the page, but that a) doesn't keep my place within the page, and b) doesn't keep the history associated with that browsing session, which is often valuable, as a session of browsing that follows links from one page to another may reach some dead ends which I may want to backtrack from. I can also close the tab and try to find it with history search at a later time, but that's not very efficient, and doesn't generally preserve the history (unless I'm willing to continue digging through the history to find every previous page). A third option is to leave the tab open, which preserves my place on the page and the history, but this means the tab continues to take up resources (which with some browsers, like Chrome, results in enormous memory usage).
So what I'd like to be able to do is close the tab, freeing up resources, but preserving the ability to pick up where I left off in that browsing session. That way, if I had been, say, browsing Wikipedia articles about World War II, following links here and there, backtracking to earlier pages, following one subtopic to another, I could come back to my earlier session and resume where I left off. Or if I had been searching Google about a particular topic, having to dig into several pages of search results, I wouldn't have to start that process from the beginning.
So I would like to propose a slightly different model of browsing. I'll call it, for now, "chains." Basically, it would work like this: when you close a tab, the tab's entire history is stored in the browser history. The browser history dialog then has a "chains" view that displays not just pages visited but "chains", which can be expanded, tree-style, to show their history. The user can then reopen a "chain" from any point in its history tree.
Chains should also be bookmarkable, with tags and comments, so that users can store ones that they know they want to resume later, rather than having to dig them out of the history.
It might not be so much to implement, because it would basically work like a browser's existing session-store functionality. e.g. Firefox's sessionstore.js
stores every window, every tab, and every tab's history. If entries in that could be archived, bookmarked, and searched, it would basically be this feature.
I don't know of any browser that does this, so if you were to do it, it might be a unique feature you could tout. :) Thanks for reading.
This issue is kinda a catch-all for plugins. Some quick thoughts:
Add an about dialog or co-opt chrome://credits or something.
Make it easy for others to build their own version with proprietary codecs (of course we can't ship with it).
Need to support an alternative Doogie window. There to some synchronization/atomicity issues. Right now we aren't prepared for multiple main windows nor are we prepared for multiple Doogie instances for the same profile.
We need to solve this, but a lot of thought is required on how to show a separate window. The best way I can think about this early on is to firstly, prevent multiple Doogie instances for the same profile. As for new windows, need to be able to "undock"/"unhinge" the browser window into its own separate window. This means when it's selected in the tree, the main window shows "this window is popped out, click here to activate" or something. When the window is activated otherwise, it becomes the selected tree item or something. I dunno, thought needed.
Makes it easier to copy URLs
This needs to be done via an immutable web mutation observer. May require some IPC back home w/ a class list or something.
Reposting from CEF forum:
In Chrome, when I attempt to reload a page that was the result of a form submission, I am presented a dialog asking me if I want to resubmit. I want to replicate this in CEF. Based on one other post I would use OnBeforeNavigate (after all, there is NavigationType of NAVIGATION_FORM_RESUBMITTED), but it is never called on Reload for POST (yet it is for GET); I don't think the reload is even happening. Same problem with OnBeforeLoad, it is never called (again, because the page is probably never even reloading).
Will open CEF issue at some point.
E.g. https://translate.google.com/ ...the dropdown to choose language doesn't show. While this is clearly not a select box, something else is clearly wrong here like js mouse events?
Some annoying things:
!g
, it should also appear up there if the string contains a space followed by a bang.Go to a link, click something (to make navigation history). Then, click off the address bar and into the browser, then back into the address bar and press backspace and watch the nav go back.
We need to solve this as a focus issue. the address bar obtaining focus is not removing focus from the browser. There are other ways of triggering this such as entering a text area in the browser, going back to the URL, going back to the text area, and seeing URL still retain a cursor.
This requires --enable-media-stream
as a CLI arg. Unfortunately, CEF does not allow a permission-based access, it's either CLI or bust (ref this post). I asked but was unanswered concerning mic/vid access without restart.
In order to work around CEF's limitations, we'd have to restart the process which is not really acceptable. Therefore the proper way to handle this is to submit a PR for CEF to support a callback for media stream access. At some point I will open a CEF issue.
Doogie dies immediately with error level 2 if ran by this batch script:
doogie
echo %ERRORLEVEL%
pause
My computer runs Windows 7 Home Premium 64-bit SP1.
Right now, and by default in Qt IIRC, when you delete a tree item, the next one up is then made current. It is much more natural (and in line with FF's TST) to move it down instead unless there isn't one at which point we move it down. Might have to intercept some kind of remove event.
Now that this issue has gone a long way, we might be able to add them to Doogie soon. Yay.
Need to be able to stop showing JS dialogs if the user wants it that way. This should be a profile-level setting (really just in the sqlite DB) and should have a UI to revert.
For the most part, we just need to fill in the platform-specific pieces. There may be some features not supported initially (e.g. there is no Linux-desktop common approach to view an SSL cert).
Need to pass em through Doogie's exe.
This is two-pronged:
Note, if it's determined worth it, maybe a dialog for configuring auto complete in many ways.
Akin to FF's TST, when a tree is collapsed, we should show the full child count (including nested) somewhere.
I will not maintain a macOS version. So I am looking for two things here:
If the CLA reqs for this project are not something someone wants to sign for maintaining this, I'll gladly work with a fork to make sure this repo abstracts anything away which would make the macOS build easier in a separate repository.
Navigate to http://doc.qt.io/qt-5/classes.html then ctrl+shift+click on a class you've never visited in there. The main page disappears (the browser actually closes underneath). Investigate.
there are a lot of ways to do it not as a separate browser, first of all there is qutebrowser, also otter browser and etc
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.