Merge branch 'testing-new-update'

This commit is contained in:
suliman altassan 2021-03-12 17:35:21 +03:00
commit a64bab5b2e
7 changed files with 85 additions and 22 deletions

1
Cargo.lock generated
View File

@ -135,6 +135,7 @@ version = "0.1.2"
dependencies = [ dependencies = [
"chrono", "chrono",
"gdk", "gdk",
"gdk-pixbuf",
"gettext-rs", "gettext-rs",
"gio", "gio",
"glib", "glib",

View File

@ -17,6 +17,7 @@ gettext-rs = "0.5.0"
subprocess = "0.2.6" subprocess = "0.2.6"
zbus = "1.8.0" zbus = "1.8.0"
zvariant = "2.5.0" zvariant = "2.5.0"
gdk-pixbuf = "0.9.0"
[dependencies.gtk] [dependencies.gtk]
version = "0.9.0" version = "0.9.0"

View File

56
README.md Normal file
View File

@ -0,0 +1,56 @@
# Blue Recorder
<img src="screenshots/screenshot1.png"/>
A simple desktop recorder for Linux systems. Built using GTK+ 3 and ffmpeg.
- It supports recording audio and video on almost all Linux interfaces with support for Wayland display server on GNOME session.
- The following formats are currently supported: mkv, avi, mp4, wmv, gif and nut.
- You can stop the recording process easily by right-clicking the icon and choosing "Stop Record". Or middle-clicking the recording icon in the notifications area (but doesn't work on all interfaces).
- You can choose the audio input source you want from the list.
- You can also set the default values you want by simply changing them in the interface, and the program will save them for you for the next time you open it.
it based on [Green Recorder](https://github.com/mhsabbagh/green-recorder) and rewritten in Rust with improvements
## Installation
Blue Recorder available as Snap package
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/blue-recorder)
## Build from source
Blue Recorder depend in the following dependencies
```
ffmpeg
gtk
gdk
gio
gettext
libappindicator3
x11-utils
pulseaudio
```
install dependencies Ubuntu and Debian based distros
```
sudo apt install build-essential clang cargo libappindicator3-1 x11-utils gettext pulseaudio ffmpeg
```
the use `Cargo` to build it
```
git clone https://github.com/xlmnxp/blue-recorder
cd <Project Directory>
cargo build --release
cp -a data interfaces po target/release
```
then you will find the executable file at
`<Project Directory>/target/release/blue-recorder`
## License
```
GNU General Public License version 3
License Copyright: Copyright © 2007 Free Software Foundation, Inc.
License License: "Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed." (www.gnu.org/licenses/gpl-3.0.en.html).
License Contact: Free Software Foundation (fsf.org).
SPDX short identifier: GPL-3.0-only
Further resources...
```
[read the license](LICENSE.md)

BIN
screenshots/screenshot1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
screenshots/screenshot2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -1,4 +1,5 @@
extern crate gdk; extern crate gdk;
extern crate gdk_pixbuf;
extern crate gettextrs; extern crate gettextrs;
extern crate gio; extern crate gio;
extern crate gtk; extern crate gtk;
@ -9,6 +10,7 @@ mod ffmpeg_interface;
// use gio::prelude::*; // use gio::prelude::*;
use ffmpeg_interface::{Ffmpeg, ProgressWidget}; use ffmpeg_interface::{Ffmpeg, ProgressWidget};
use gdk_pixbuf::Pixbuf;
use gettextrs::{bindtextdomain, gettext, setlocale, textdomain, LocaleCategory}; use gettextrs::{bindtextdomain, gettext, setlocale, textdomain, LocaleCategory};
use glib::signal::Inhibit; use glib::signal::Inhibit;
use gtk::prelude::*; use gtk::prelude::*;
@ -203,28 +205,6 @@ fn main() {
config_management::set_bool("default", "followmousecheck", switch.get_active()); config_management::set_bool("default", "followmousecheck", switch.get_active());
}); });
// About Dialog
about_menu_item.set_label("about");
about_dialog.set_transient_for(Some(&main_window));
about_dialog.set_program_name(&gettext("Blue Recorder"));
about_dialog.set_version(Some("3.2.3"));
about_dialog.set_copyright(Some("© 2021 Salem Yaslem"));
about_dialog.set_wrap_license(true);
about_dialog.set_license(Some("Blue Recorder is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nBlue Recorder is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\nSee the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Blue Recorder. If not, see <http://www.gnu.org/licenses/>."));
about_dialog.set_comments(Some(&gettext(
"A simple screen recorder for Linux desktop. Supports Wayland & Xorg.",
)));
about_dialog.set_authors(&[
"Salem Yaslem <s@sy.sa>",
"M.Hanny Sabbagh <mhsabbagh@outlook.com>",
"Alessandro Toia <gort818@gmail.com>",
"Patreon Supporters: Ahmad Gharib, Medium,\nWilliam Grunow, Alex Benishek.",
]);
about_dialog.set_artists(&["Mustapha Assabar"]);
about_dialog.set_website(Some("https://github.com/xlmnxp/blue-recorder/"));
about_dialog.set_logo_icon_name(Some("blue-recorder"));
about_dialog.set_transient_for(Some(&main_window));
// Buttons // Buttons
window_grab_button.set_label(&gettext("Select a Window")); window_grab_button.set_label(&gettext("Select a Window"));
area_grab_button.set_label(&gettext("Select an Area")); area_grab_button.set_label(&gettext("Select an Area"));
@ -405,6 +385,31 @@ fn main() {
_ffmpeg_record_interface.borrow_mut().clone().play_record(); _ffmpeg_record_interface.borrow_mut().clone().play_record();
}); });
// About Dialog
about_menu_item.set_label("about");
about_dialog.set_transient_for(Some(&main_window));
about_dialog.set_program_name(&gettext("Blue Recorder"));
about_dialog.set_version(Some("3.2.3"));
about_dialog.set_copyright(Some("© 2021 Salem Yaslem"));
about_dialog.set_wrap_license(true);
about_dialog.set_license(Some("Blue Recorder is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nBlue Recorder is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\nSee the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Blue Recorder. If not, see <http://www.gnu.org/licenses/>."));
about_dialog.set_comments(Some(&gettext(
"A simple screen recorder for Linux desktop. Supports Wayland & Xorg.",
)));
about_dialog.set_authors(&[
"Salem Yaslem <s@sy.sa>",
"M.Hanny Sabbagh <mhsabbagh@outlook.com>",
"Alessandro Toia <gort818@gmail.com>",
"Patreon Supporters: Ahmad Gharib, Medium,\nWilliam Grunow, Alex Benishek.",
]);
about_dialog.set_artists(&["Mustapha Assabar"]);
about_dialog.set_website(Some("https://github.com/xlmnxp/blue-recorder/"));
about_dialog.set_logo_icon_name(Some("blue-recorder"));
about_dialog.set_logo(Some(
&Pixbuf::from_file(&indicator_icon_path.to_str().unwrap()).unwrap(),
));
about_dialog.set_transient_for(Some(&main_window));
// Windows // Windows
// hide area chooser after it deleted. // hide area chooser after it deleted.
let _area_chooser_window = area_chooser_window.clone(); let _area_chooser_window = area_chooser_window.clone();