Git Product home page Git Product logo

beezer's Introduction

Beezer Icon Beezer     Haiku-CI

Beezer is an archiver application for the Haiku operating system and functionally similar to programs like WinZip, Ark (on KDE) and Archive Manager (on Gnome). Beezer does not work on Windows, GNU/Linux or MacOS.

Screenshot


Beezer is a native Haiku application written from scratch in C++ with the aim of having an slick, responsive and easy-to-use GUI while offering powerful archiving features. Under the hood, Beezer controls command-line programs, most of which come pre-installed with the operating system, to seamlessly perform compression and decompression.

Beezer was designed for a pluggable module architecture and supports several popular archive formats such as zip, tar, gzip, bzip2, xz, lha (lzh) and 7zip using pluggable add-ons. Beezer also supports some additional file formats that may require you to download the binaries if they don't ship as part of the operating system. Adding support for more archive formats is thus relatively little work.

Beezer is open source and published under the BSD 3-clause license. Beezer was originally written by Ramshankar (Teknomancer) for BeOS and later Zeta. He open sourced it in 26 September 2009 following which Chris Roberts (augiedoggie) ported it to Haiku in 2011. Beezer is now being developed/maintained by the two of them in their spare time. Beezer is currently only developed/maintained for Haiku. The final version available for Zeta and BeOS is 0.09 with no further updates planned.

Contributions in the form of pull requests, bug reports, patches, etc... are welcome.

Beezer's official home page can be found here: https://ramshankar.org/software/beezer/

Build Requirements

In order to build Beezer you will need to have the cmake build tool as well as the sphinx documentation generator. Both can be installed with the HaikuDepot application or by using pkgman:

~> pkgman install cmake sphinx_python310

Build Instructions

~> cd Beezer/Source
~/Beezer/Source> cmake .
~/Beezer/Source> make

Once the build finishes the binaries will be available in the build directory. Check the wiki for a list of the build options available.

beezer's People

Contributors

augiedoggie avatar oscarl avatar teknomancer avatar tgkokk avatar threedeyes avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

oscarl

beezer's Issues

allow saving an archive to a different format

It would be nice to be able to convert archive formats. Probably as a "Save As" or "Export As" menu item, but it could also be a dedicated conversion window with a "Convert archive" entry in the Tools menu.

Fix broken InputAlert

Lots of changes to Haiku's BAlert implementation (using LayoutKit, changing view names etc.)

Currently using InputAlert causes a hard crash, this needs to be fixed.

I already have a working solution but some UI elements aren't perfect (margins), so I'll fix this myself for now.

make use of dynamic Tracker menus

A couple of years ago Tracker gained the ability for add-ons to register new submenus in the context menu. Beezer might be able to make use of this to provide a custom file extraction menu (or other menuitems). I don't think there is much documentation on this feature but an example by the author that added the feature can be found at the TrackGit repository.

Copyright and license headers in source files

Currently we have the copyright starting-year and an ending year for the developer names.

However, maintaining the ending year is going to be difficult unless we automate the task each year. As far as copyright is concerned, just mentioning the starting year should be good enough because from a legal stand-point even if no end-year is mentioned, the copyright still holds. I'm not a lawyer, but I'm pretty sure if someone forgot to update the end year for a few years, the copyright doesn't stop applying, in which case it would be preferable to have the starting year.

I also propose shortening the length of the copyright/license header significantly by chopping off the full verbose BSD license and replacing it with SPDX license identifier: https://spdx.dev/ids/

I think we already have a LICENSE.md in the root of the project, so that just be more than enough to cover it.

In our case it would be: // SPDX-License-Identifier: BSD-3-Clause (must be exactly spelled that way)

A complete example:

// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) 2009 Ramshankar (aka Teknomancer)
// Copyright (c) 2011 Chris Roberts
// All rights reserved

Discard superfluous functionality in Preferences class

Preferences (in Preferences.cpp and .h) is a BMessage derived class that provided some convenience wrappers.

It looks like in Haiku most of these wrappers already exists and Set* methods already does what we want (i.e. replace if existing or add if none).

We should be able to get rid of the Find* methods too and replace callers with Get* methods with passable default values.

Fixed black text colour where there are grey background

It would be better to make whole interface to use layout api but in the meantime fixing text colour to black in Preferences tabs, File splitter and File joiner windows would ensure that it remains readable when user selected a light colour for panel texts.

File Splitter, Joiner: Add checksum support

When files are split, add an option to checksum the original (whole) file. This allows us to verify integrity when the files are joined into the original.

Store the checksum as a BFS file attribute in every split file. However, if a self-extracting executable is generated we can store the checksum only in the executable.

Checksums will slightly increase the size of each split file but since this is optional, the user can decide if file size is more important than being able to verify integrity (or he can of course, do it manually himself, hence optional).

The idea is to pick the checksum algorithm with speed in mind rather than collision resistance but at least as good as MD5 or something better (and faster).

Allow customizing list entry height

I know we will eventually will be switching to BColumnListView (or whatever Haiku has) but that's a much larger and more pervasive change and is a long-term action item.

The height calculation logic already seems makes to respect the font-height internally (derived from BListItem) but it would be nice to have a few extra choices like: Compact, Normal, Relaxed and Loose. This would be presented to the user as a BMenuField option in Interface settings.

Refer ListEntry.h kListEntryHeight. This is passed in as a minimum height each list entry (row) in the archive list has. A value of 20.0 is still quite tightly packed at least with the font-size I'm using, having a few more options would be good.

This requires a bit of experimentation with different font sizes. The padding should probably be relative to the font size. This may require modifying CLVListItem::Update.

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.