Coder Social home page Coder Social logo

min's Introduction

Min

Min is a fast, minimal browser that protects your privacy. It includes an interface designed to minimize distractions, and features such as:

  • Full-text search for visited pages
  • Ad and tracker blocking
  • Automatic reader view
  • Tasks (tab groups)
  • Bookmark tagging
  • Password manager integration
  • Dark theme

Download Min from the releases page, or learn more on the website.

Downloads Discord

Min is made possible by these sponsors:

@blackgwe @Emmanuel65

Become a sponsor

Screenshots

The search bar, showing information from DuckDuckGo

The Tasks Overlay

Reader View

Installing

You can find prebuilt binaries for Min here. Alternatively, skip to the section below for instructions on how to build Min directly from source.

Installation on Linux

  • To install the .deb file, use sudo dpkg -i /path/to/download
  • To install the RPM build, use sudo rpm -i /path/to/download --ignoreos
  • On Arch Linux install from AUR.
  • On Raspberry Pi, you can install Min from Pi-Apps.

Getting Started

  • The wiki provides an overview of the the features available in Min, and a list of available keyboard shortcuts.
  • Min supports installing userscripts to extend its functionality. See the userscript documentation for instructions on writing userscripts, as well as a collection of scripts written by the community.

Developing

If you want to develop Min:

  • Install Node.
  • Run npm install to install dependencies.
  • Start Min in development mode by running npm run start.
  • After you make changes, press alt+ctrl+r (or opt+cmd+r on Mac) to reload the browser UI.

Building binaries

In order to build Min from source, follow the installation instructions above, then use one of the following commands to create binaries:

  • npm run buildWindows
  • npm run buildMacIntel
  • npm run buildMacArm
  • npm run buildDebian
  • npm run buildRaspi (for 32-bit Raspberry Pi)
  • npm run buildLinuxArm64 (for 64-bit Raspberry Pi or other ARM Linux)
  • npm run buildRedhat

Depending on the platform you are building for, you may need to install additional dependencies:

  • If you are using macOS and building a package for Linux, install Homebrew, then run brew install fakeroot dpkg first.
  • If you are using macOS or Linux and building a package for Windows, you will need to install Mono and Wine.
  • If you are building a macOS package, you'll need to install Xcode and the associated command-line tools. You may also need to set your default SDK to macOS 11.0 or higher, which you can do by running export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk. The exact command will depend on where Xcode is installed and which SDK version you're using.
  • To build on Windows, you'll need to install Visual Studio. Once it's installed, you may also need to run npm config set msvs_version 2019 (or the appropriate version).

Contributing to Min

Thanks for taking the time to contribute to Min!

Getting Help

If you're experiencing a bug or have a suggestion for how to improve Min, please open a new issue.

If you have questions about using Min, need help getting started with development, or want to talk about what we're working on, join our Discord server.

Contributing Code

  • Start by following the development instructions listed above.
  • The wiki has an overview of Min's architecture.
  • Min uses the Standard code style; most editors have plugins available to auto-format your code.
  • If you see something that's missing, or run into any problems, please open an issue!

Contributing Translations

Adding a new language

  • Find the language code that goes with your language from this list (line 55 - 230).
  • In the localization/languages directory, create a new file, and name it "[your language code].json".
  • Open your new file, and copy the contents of the localization/languages/en-US.json file into your new file.
  • Change the "identifier" field in the new file to the language code from step 1.
  • Inside the file, replace each English string in the right-hand column with the equivalent translation.
  • (Optional) See your translations live by following the development instructions above. Min will display in the same language as your operating system, so make sure your computer is set to the same language that you're translating.
  • That's it! Make a pull request with your changes.

Updating an existing language

  • Find the language file for your language in the localization/languages directory.
  • Look through the file for any items that have a value of "null", or that have a comment saying "missing translation".
  • For each of these items, look for the item with the same name in the en-US.json file.
  • Translate the value from the English file, replace "null" with your translation, and remove the "missing translation" comment.
  • Make a pull request with the updated file.

min's People

Contributors

aliencoder16 avatar anevaiopvn avatar antfu avatar b0elter avatar bluemancz avatar burnoutberni avatar code-hunger avatar cog1to avatar danfragoso avatar emersion avatar flightmansam avatar g-ongenae avatar idalencar avatar jb1905 avatar kagaminep avatar lobbylobster avatar lubiedo avatar milo123459 avatar palmeral avatar paulbgd avatar plrenaudin avatar revolter avatar sestowner avatar smarquespt avatar sreco avatar umitseyhan75 avatar valtlfelipe avatar vicr123 avatar yulucodebase avatar z-huang 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  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

min's Issues

Extension support

  • create an extension store
  • create a way to manage extensions
  • create extension apis

Copy is broken

Copying via command-c or edit-copy from within a tab doesn't seem to work.

Use Firefox Sync

Firefox Sync is an open project that stores passwords, bookmarks, and other browser related things.

URL truncation issue

When url bar autocompletes to a long address, can't make it shorter, whole browser just moves:
screen recording 2016-04-17 at 01 29 pm

Malicious site block has no "let me in anyway"

I'm trying to access a local site that we're using for a CI server but I'm met with the malicious warning screen. Sadly it seems there's no option other than "leave this site". I'm wondering if there's something I'm missing here?

Name too generic

I liked the browser, but the name is too generic. I can't really search for it anywhere without getting a ton of unrelated garbage. Since the project is in its early stages, I think you should consider changing the name.

As an example, a google search for "Min Browser" throws UC Browser Mini etc.

2 finger swiping to go back/forward on mac is buggy

If I swipe right to go back a page, Min goes back 2 pages in my history. For example if if I'm on site A and I leave that site to search for somthing and click a link in the search results then swipe to go back, I'll end up back on site A instead of back on the search results page.

Close tab on middle click

Just about every browser I've used recently has supported closing a tab by middle-clicking on it in the tab bar; could this behavior be added to Min?

Error Installing Min in Ubuntu 14.04

When installing the .deb package from the Min website, Ubuntu 14.04 gives the following error:

The package is of bad quality

The installation of a package which violates the quality standards isn't allowed. This could cause serious problems on your computer. Please contact the person or organization which provided this package file and include the details beneath.

Lintian check results for /home/user/Downloads/Min_1.1.1_amd64.deb:
E: Min: package-has-no-description
E: Min: bad-package-name
E: Min: package-not-lowercase
E: Min: wrong-file-owner-uid-or-gid usr/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/bin/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/bin/Min 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/LICENSE 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/LICENSES.chromium.html 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/Min 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/content_shell.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/icudtl.dat 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/libffmpeg.so 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/libnode.so 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/am.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ar.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/bg.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/bn.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ca.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/cs.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/da.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/de.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/el.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/en-GB.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/en-US.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/es-419.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/es.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/et.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/fa.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/fake-bidi.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/fi.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/fil.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/fr.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/gu.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/he.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/hi.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/hr.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/hu.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/id.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/it.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ja.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/kn.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ko.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/lt.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/lv.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ml.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/mr.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ms.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/nb.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/nl.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/pl.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/pt-BR.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/pt-PT.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ro.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ru.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/sk.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/sl.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/sr.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/sv.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/sw.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/ta.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/te.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/th.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/tr.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/uk.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/vi.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/zh-CN.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/locales/zh-TW.pak 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/natives_blob.bin 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/.DS_Store 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/.gitignore 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/Gruntfile.js 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/README.md 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/css/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/css/base.css 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/css/findinpage.css 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/css/navbarTabs.css 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/css/searchbar.css 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/css/webviews.css 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/dist/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/dist/.DS_Store 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/dist/build.js 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/dist/build.min.js 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/dist/webview.js 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/dist/webview.min.js 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/ext/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/ext/.DS_Store 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/ext/Dexie.min.js 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/ext/abp-filter-parser-modified/ 501/20
E: Min: wrong-file-owner-uid-or-gid usr/share/Min/resources/app/ext/abp-filter-parser-modified/.DS_Store 501/20

...and so forth...

System info:

User: user
Hostname: ubuntu
OS: Ubuntu 14.04 x86_64
Kernel: 3.13.0-85-generic
Uptime: 1:40
Window Manager: Compiz
Desktop Environment: GNOME
Shell: Bash
Terminal: Xterm
Packages: 2070
CPU: Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz
RAM: 2480 MB / 3950 MB
Disk: 12G / 62G

Request: allow user to change search engine

While I love your UI, DDG is blocked in my country (China)

PING duckduckgo.com (93.46.8.89): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

It would be great to be able to change to the search engine of my choice.

Little CSS bug

screen shot 2016-04-15 at 9 47 54 pm

Not a very nice start (page).
This is on a 21-inch mid-2011 iMac running OSX 10.11.4.

Min always opens full screen

Min always launches with a window that fills my entire screen. This might be by design, but it's way too big when you're using a large display.

My wish is that Min would just remember its previous window size when launched.

Reaching out...

Not sure if there is a better place to put this message — I work on DuckDuckGo and would love to chat about the integration with the maintainer (@PalmerAL). I like what you're doing and would love to see how we can further help you out. Drop me a line at jordan (at) duckduckgo .com

Add tab tree structure

I would love to see support for a tree tab structure, similar to that of tree-style-tab for Firefox. Preliminarily, I could see a horizontal tab tree working as follows:

  • the tab bar shows the current tab as well as all of its siblings, side-by-side
  • a key combination can be used to move up and down the tree, e.g. ctrl-up & ctrl-down
  • when cmd-shift-e is pressed, the current tab and its siblings stay in their positions, but an additional tab bar containing all the children of the current tab appears below. These children should update based on which tab is currently selected. Moving up in the tab tree selects the current tab's parent, and the tab bar now displays the parent and all of its siblings.

A vertical tab bar would also be useful, but is somewhat less so on normal 16:9 screens, especially considering that many sites are optimized for this aspect ratio. I'm quite busy with classes this semester, but I would love to contribute to min in some way when time allows. Maybe I'll start trying to tackle tree tabs.

I didn't want to clutter up the text of this issue, but I want to say how impressed I am with this project. I am astounded by the sheer number of commits you have made, especially considering that you are working alone. I use DuckDuckGo on all of my machines, and the tight integration between DDG and min is ridiculously awesome. This project deserves so many more stars, and I'm definitely going to tell my friends about it. Keep up the great work, and I'll definitely keep an eye on how min is progressing!

Page returns some sort of error, but unsure what, or how to learn more about the error

screen shot 2016-04-13 at 12 15 12 pm

Left Min open for an hour or so, and I believe sometime during this time period, I came back and saw this warning sign in the window tab bar. Not sure what the issue is, and clicking on the icon only brings the tab to the foreground or brings up the search panel.

I'm presuming it's a rendering issue, or maybe something to do with the content blocker? Really don't know, and not sure how to debug even if I want to find out.

When page tabs have an all white background, tabs should still have some sort of separator.

When I believe I'm viewing a page that has white text, the tab bar background matches to become all white. When this happens, there's no sort of separator between tabs, which is a bit messy and makes the entire bar a bit difficult to understand.

screen shot 2016-04-13 at 12 17 55 pm

The bar works as expected (albeit the separation colors are a bit light) when viewing a page with black text. This is a much better experience in differentiating the proper click area for switching between tabs.

screen shot 2016-04-13 at 12 18 28 pm

Tab reordering

I think a pretty standard feature would be tab reordering :)

Windows version?

Hi. Min is awesome. Any chance to get this one available for windows in the near future? Thank you.

PDF Zoom highly sensitive

The PDF zoom (using pinch or scroll) is highly sensitive, and needs to be dampened.

Min: 1.1.1
OS X: 10.11.4
Machine: Macbook Pro 15" Retina (Mid 2015)

Ctrl+Left and Ctrl+Right navigating instead of moving cursor

When typing, I constantly use Ctrl+Left to move one word to the left, and Ctrl+Right to move one word to the right -- something generally implemented at the OS or GUI toolkit level, and supported on most platforms I've used. On Linux, pressing those keys in Min causes it to navigate back and forward instead of moving the cursor, unlike all other apps on the system.

Windows path + filename too long

Thanks for making Min, I think it's great! However, I tried extracting the Min-v1.1.2-win32-x64.zip file to C:, but some of the folders and files have a path + filename length greater than what Windows 10 allows (either 256 or 260 characters, apparently). After skipping copying those files, Min seems to work normally.

Here's a few of the errors I got; there were more files and folders with long names that Windows couldn't handle so I had no choice but to skip copying all of them.

min-win-error1

min-win-error2

Malicious site detected is too sensitive

I've noticed a few sites that I use daily that are being incorrectly identified as malicious.

namecheap.com
discovercard.com
compass.cloudmine.io

It seems that the parameters used to determine a phishing site are too broadly defined.

Remove file viewer

The file viewer isn't very useful, often gets in the way (by making it difficult to copy-paste code), and adds a lot of large dependencies. It should be removed.

dist folder isn't needed

Since the people cloning this will be installing/building it themselves, keeping the dist folder in the repository only keeps the commit history cluttered and makes you have to manually merge things when you merge multiple changes from different branches.

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.