Clean tab-less browser based on webkit2 and GTK4.

Overview

Rose Browser

Simple browser based on webkit2-5.0/GTK4.

Showcase

Requirements

In order to build rose you need gtk4 and webkit2gtk-5.0.

In order to use the functionalities:

  • video support: gst-libav, gst-plugins-good
  • searchbar/find/history: dmenu
  • tabs: tabbed
  • download: aria2c

Installation

Run following command to build and install (if necessary as root):

$ make clean install

Usage

To set default homepage change config.h

Opening new window with specific website:

$ rose https://duckduckgo.com

TODO

  • Add tabs option in config
  • Improve mass weight image loading time
  • Add support for xdg-open and opening files
Issues
  • Running rose without systemd

    Running rose without systemd

    When i tried to pull the dependencies for rose: gtk4 and webkit2gtk5.0, gtk4 installed just fine, but webkit2gtk5.0 seems to be needing systemd etc as dependency. I'm running artix linux with openrc though and therefor dont have systemd etc. I don't really see why i would need systemd for a browser/webkit anyway lol

    I searched for a minimalistic browser for quite a while now and this looks really promising, but it seems like i wont be able to install it without changing distro

    So this may be the wrong place to ask, but is there a way to run the browser without systemd?

    in progress 
    opened by MrMineDe 9
  • Linking error: undefined reference

    Linking error: undefined reference

    I cannot build rose due to ld error:

    /bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib/libjavascriptcoregtk-5.0.so: undefined reference to `std::condition_variable::wait(std::unique_lock<std::mutex>&)@GLIBCXX_3.4.30'
    /bin/ld: /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib/libwebkit2gtk-5.0.so: undefined reference to `std::__glibcxx_assert_fail(char const*, int, char const*, char const*)@GLIBCXX_3.4.30'
    collect2: error: ld returned 1 exit status
    make: *** [makefile:27: rose] Error 1
    

    I'm guessing I miss some library but I don't know which. I also tried to install an AUR package, hoping it would automatically install all the dependencies but it didn't.

    opened by NikitaIvanovV 3
  • colour of rose program is to bright and tinted purple

    colour of rose program is to bright and tinted purple

    Describe the bug the colours of websites and inspector

    Expected behavior the colours are as expected

    Screenshots 2022-05-26-170830_1920x1080_scrot

    2022-05-26-171222_1920x1080_scrot this image bellow is for reference on how those websites look in Firefox 2022-05-26-171314_1920x1080_scrot

    Desktop (please complete the following information):

    • OS: artix linux
    • webkit2gtk-5.0 2.36.2-1 installed from arch repo
    • gtk4 1:4.6.4-1 installed from artix repo
    bug in queue 
    opened by zooki2006 3
  • searx preferences completely freezes rose

    searx preferences completely freezes rose

    building with let's say https://paulgo.lo as a searx instance default homepage works just fine. once the site is loaded and I try to change the theme of the searx instance to dark rose freezes

    in progress 
    opened by se7en-x230 3
  • Remove x11

    Remove x11

    is it possible x11 from rose so you can use it on wayland? something that netsurf has and https://sr.ht/~sircmpwn/visurf/. Otherwise i love rose keep up the good work

    opened by ghost 2
  • No Installation Guide

    No Installation Guide

    when the command make clean install is typed in, the compilation gets terminated because of missing libraries, an installation guide should be more clear in the readme file [dependencies and what not].

    Also seems like this project is only built for x11? Is/will wayland be supported in the future?

    Package gtk4 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `gtk4.pc'
    to the PKG_CONFIG_PATH environment variable
    Package 'gtk4', required by 'virtual:world', not found
    Package 'webkit2gtk-5.0', required by 'virtual:world', not found
    Package 'x11', required by 'virtual:world', not found
    Package gtk4 was not found in the pkg-config search path.
    Perhaps you should add the directory containing `gtk4.pc'
    to the PKG_CONFIG_PATH environment variable
    Package 'gtk4', required by 'virtual:world', not found
    Package 'webkit2gtk-5.0', required by 'virtual:world', not found
    Package 'x11', required by 'virtual:world', not found
    In file included from rose.c:1:
    rose.h:3:10: fatal error: X11/X.h: No such file or directory
        3 | #include <X11/X.h>
          |          ^~~~~~~~~
    compilation terminated.
    In file included from window.c:1:
    keyconf.h:3:10: fatal error: gdk/gdk.h: No such file or directory
        3 | #include <gdk/gdk.h>
          |          ^~~~~~~~~~~
    compilation terminated.
    make: *** [makefile:27: rose] Error 1
    
    
    opened by NyllRE 1
  • Project is missing license information

    Project is missing license information

    While the source code of Rose is open in the sense that it's available to the general public via GitHub, strictly speaking it's not Open Source because there are no license terms which define what you're able to do with it. Since it was published by the author, one could argue that it was meant to be looked at by others, but that's it. Nobody is legally allowed to actually do anything with it (study the code, build the application, distribute the code or the compiled binary, make changes, re-use code, ...).

    Licensing code is not an optional hassle in the world that we're living in. It protects both the author (e.g. from claims if the software doesn't do what somebody thought it'd do!) and the interested third party in being sure to comply with what use cases the author intended the software for. Please pick a license for your code. If you want it to be as useful to others as possible without having to deal with pages of legalese, I would suggest a permissive license such as BSD-2-clause or MIT. If you're more into copyleft, consider GPLv2 or GPLv3, or Apache 2.0 for a middle ground.

    I'm contributing to a project that provides Open Source software packages across multiple platforms (DragonFlyBSD, FreeBSD, Linux, NetBSD, Solaris/illumos). After having tried out Rose and liking it, I have replaced Surf on one of my older machines with it. I've prepared a port for it, but cannot commit that as long as there is no license that covers distributing the compiled software. I'd be happy to lend a hand and discuss licensing if you happen to have any questions. Thanks for your efforts to make a simple but modern WebKitGTK browser available!

    opened by kraileth 1
  • Fix some indentation in rose.c

    Fix some indentation in rose.c

    I just noticed a couple lines were indented like a dozen times, it doesn't look intentional as I don't see any other examples of that in the file. Feel free to ignore and close if it was indeed intentional.

    opened by devenblake 1
  • Use config.def.h instead of config.h

    Use config.def.h instead of config.h

    Since config.h is destined to be modified by the end-user, I think it is better to adopt what suckless usually does and move config.h to config.def.h. This file is sort of a template from which the end-user can build their own config.h that won’t be tracked by git.

    If config.h doesn’t exist at compile-time, the makefile will automatically copy it from the template. Otherwise, it will not be modified.

    opened by Phundrak 1
  • Use environment variables for CC and PREFIX

    Use environment variables for CC and PREFIX

    Pull request #3 can break the compilation process. In my case, cc points to gcc which cannot handle the -G_DISABLE_DEPRECATED and the -GDK_PIXBUF_DISABLE_DEPRECATED command-line options whereas clang works like a charm.

    This commit allows the user to use whichever compiler they want through environment variables such as:

    CC=clang make all
    

    It also allows the user to define their preferred prefix with environment variables:

    PREFIX=$HOME/.local/bin make install
    
    opened by Phundrak 1
  • Add editorconfig

    Add editorconfig

    This ensures all text editors and IDEs share the same basic config when editing the source code of Rose.

    Addition of a clang-format file should also be considered.

    opened by Phundrak 1
Releases(beta)
  • beta(May 22, 2022)

Owner
Rosé
Rosé
A Minimal Web Browser with Built-in Adblocker in Less Than 100 Lines of Code

A Minimal QtWebEngine Web Browser with Adblocker How Does It Work This is a minimal network filter implementation using QWebEngineUrlRequestIntercepto

Penk Chen 18 May 14, 2022
Vimb - the vim like browser is a webkit based web browser that behaves like the vimperator plugin for the firefox and usage paradigms from the great editor vim.

Vimb - the vim like browser is a webkit based web browser that behaves like the vimperator plugin for the firefox and usage paradigms from the great editor vim. The goal of vimb is to build a completely keyboard-driven, efficient and pleasurable browsing-experience.

Daniel Carl 1.1k Jun 19, 2022
Tab module for imgui. Should be relatively forwardly compatible.

Tab module for imgui. Should be relatively forwardly compatible.

Scott Mudge 117 Jun 4, 2022
agent-less and lightweight communication library compatible with rclcpp for embedded devices

mros2 mros2 (formally mROS 2) realizes an agent-less and lightweight runtime environment compatible with ROS 2 for embedded devices. It consists of ba

null 93 Jun 24, 2022
An optimized "RTOS" (more than HAL but less than RTOS) for ROV controling and getting sensor data

Nitori-ROV-OS 一个专门为水下机器人(ROV、AUV)进行优化的实时操作系统,暂命名为 Nitori,中文名 荷取 可以通过修改硬件兼容层(Port)进行移植 预计最初版本支持stm32f407和stm32h750,并在实验室目前的水下机器人中进行部署 系统分为四层,六个主要组件: 硬件

Doublues_G 2 Jan 10, 2022
A C++11 large integer library with effective high performance, simplistic in nature and also clean in the eyes.

BigIntegerCPP BigIntegerCPP is a C++11 port of large integer library used in CryptoLib4Pascal. It allows mostly parsing of numbers as strings in diffe

Telepati 25 Apr 22, 2022
Blade - A simple, fast, clean, and dynamic language that allows you to develop complex applications quickly.

The Blade Programming Language Quick links: BUILDING | CONTRIBUTING | DOCS | LICENSE | tl;dr Blade is a simple, fast, clean and dynamic language that

Blade Programming Language 66 Jun 2, 2022
A bright opening, a clear sight, a clean slate.

Skylight A bright opening, a clean window. Etymology According to dictionary.com, a "skylight" is: an opening in a roof or ceiling, fitted with glass,

null 44 Jun 22, 2022
Source Code for 'Clean C++20' by Stephan Roth

Apress Source Code This repository accompanies Clean C++20 by Stephan Roth (Apress, 2021). Download the files as a zip using the green button, or clon

Apress 19 May 24, 2022
Surf - simple webkit-based browser

Surf - simple webkit-based browser

Johannes Hove-Henriksen 1 Nov 21, 2021
QtWebKit-based web browser on Linux framebuffer.

FBrowser QtWebKit-based web browser on Linux framebuffer. Security Notes This browser is not intended for visiting untrusted websites. By default, OSB

null 14 May 1, 2022
Browser and NodeJS Web Assembly audio decoder libraries that are highly optimized for size and performance.

WASM Audio Decoders WASM Audio Decoders is a collection of Web Assembly audio decoder libraries that are highly optimized for browser use. Each module

Ethan Halsall 53 May 30, 2022
A static C library to build applications for the Foenix retro computers, and, eventually, a single-tasking operating system and file browser that sits atop the Foenix MCP Kernel

@mainpage Foenix A2560 Foenix Retro OS: fr/OS A2560-FoenixRetroOS This project provides 2 things: A static C library/framework that anyone can use to

null 3 May 8, 2022
Filter and launch links in a browser of your choice!

Link Launcher Filter links with regular expressions and launch them into your favourite browsers Have you ever wanted to open a youtube link from othe

null 5 Aug 20, 2021
A homebrew browser that's actually good.

Better Homebrew Browser The homebrew browser that's actually good. Massive thanks to GrapheneCt on his work on ScePaf. Features It is the second ever

Ibrahim 52 Jun 20, 2022
an easy-to-use cross platform web browser controller for C++

WebBrowser++ 这是一个基于C++17的唯头文件跨平台浏览器控制库。 您只需要将本目录下的Include文件夹拷贝至您的项目中即可使用。如果使用CMake编译,则可直接include_directories(Include),也可以模仿本项目的CMakeLists.txt进行编写。 建立该

null 8 Nov 17, 2021
A modern ESM build of the Potrace library for use in the browser.

ESM Potrace Wasm A modern ESM build of the Potrace library for use in the browser. Installation npm install --save esm-potrace-wasm Usage import potra

Thomas Steiner 31 May 19, 2022
An easy programming language that runs in the browser

easylang.online An easy programming language that runs in the browser Website easylang.online Build in Linux Dependencies Download Emscripten SDK and

chkas 61 May 27, 2022
Scriptable Headless Browser

PhantomJS - Scriptable Headless WebKit PhantomJS (phantomjs.org) is a headless WebKit scriptable with JavaScript. The latest stable release is version

Ariya Hidayat 28.9k Jun 26, 2022