├── dbus ├── mechanix │ ├── extensions │ │ ├── .gitignore │ │ ├── src │ │ │ ├── detection │ │ │ │ └── mod.rs │ │ │ ├── proxy │ │ │ │ └── mod.rs │ │ │ ├── lib.rs │ │ │ ├── events │ │ │ │ └── mod.rs │ │ │ └── errors.rs │ │ ├── examples │ │ │ ├── service.rs │ │ │ └── reciever.rs │ │ ├── config.toml │ │ └── Cargo.toml │ ├── system │ │ ├── src │ │ │ ├── lib.rs │ │ │ └── hw_button_client.rs │ │ ├── README.md │ │ ├── Cargo.toml │ │ └── examples │ │ │ └── client.rs │ └── mxconf │ │ └── Cargo.toml └── freedesktop │ ├── bluez │ ├── src │ │ ├── lib.rs │ │ └── errors.rs │ ├── examples │ │ ├── power_on.rs │ │ ├── stream.rs │ │ └── scan.rs │ └── Cargo.toml │ ├── upower │ ├── src │ │ └── lib.rs │ └── Cargo.toml │ ├── networkmanager │ ├── src │ │ └── lib.rs │ ├── examples │ │ ├── wifi_events.rs │ │ ├── enable_wifi.rs │ │ └── access_point_events.rs │ └── Cargo.toml │ └── pulseaudio │ ├── examples │ └── sinks.rs │ ├── src │ └── lib.rs │ └── Cargo.toml ├── apps ├── files │ ├── elinux │ │ ├── .gitignore │ │ ├── flutter │ │ │ ├── third_party │ │ │ │ └── libpdfium │ │ │ │ │ └── libpdfium.so │ │ │ ├── generated_plugin_registrant.dart │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ └── runner │ │ │ ├── CMakeLists.txt │ │ │ └── flutter_window.h │ ├── assets │ │ ├── images │ │ │ ├── add.png │ │ │ ├── csv.png │ │ │ ├── eye.png │ │ │ ├── pdf.png │ │ │ ├── usb.png │ │ │ ├── arrow.png │ │ │ ├── back.png │ │ │ ├── copy.png │ │ │ ├── delete.png │ │ │ ├── file.png │ │ │ ├── fold.png │ │ │ ├── grid.png │ │ │ ├── home.png │ │ │ ├── info.png │ │ │ ├── list.png │ │ │ ├── move.png │ │ │ ├── paste.png │ │ │ ├── recent.png │ │ │ ├── rename.png │ │ │ ├── search.png │ │ │ ├── arrow_up.png │ │ │ ├── compress.png │ │ │ ├── extract.png │ │ │ ├── refresh.png │ │ │ ├── terminal.png │ │ │ ├── x_circle.png │ │ │ ├── audio_file.png │ │ │ ├── downloads.png │ │ │ ├── excel_file.png │ │ │ ├── eye_slash.png │ │ │ ├── hard_drive.png │ │ │ ├── image_file.png │ │ │ ├── list_checks.png │ │ │ ├── text_file.png │ │ │ ├── unfold_dir.png │ │ │ ├── unfold_more.png │ │ │ ├── video_file.png │ │ │ ├── archive_file.png │ │ │ ├── create_folder.png │ │ │ ├── home_documents.png │ │ │ ├── list_checks_all.png │ │ │ ├── sort_ascending.png │ │ │ ├── sort_descending.png │ │ │ └── dots_three_vertical.png │ │ └── screenshots │ │ │ ├── other_options.png │ │ │ ├── file_operations.png │ │ │ ├── files_app_menu.png │ │ │ └── search_operation.png │ ├── lib │ │ ├── app_route.dart │ │ └── src │ │ │ ├── commons │ │ │ ├── styles │ │ │ │ ├── color.dart │ │ │ │ └── text.dart │ │ │ └── customWidgets │ │ │ │ ├── custom_loading_dialog.dart │ │ │ │ ├── label_value_row.dart │ │ │ │ ├── custom_text_button.dart │ │ │ │ └── custom_button.dart │ │ │ ├── features │ │ │ └── files │ │ │ │ ├── models │ │ │ │ └── file_location.dart │ │ │ │ └── presentation │ │ │ │ └── view_mode_notifier.dart │ │ │ └── services │ │ │ └── media_kit_manager.dart │ ├── devtools_options.yaml │ ├── .vscode │ │ └── launch.json │ ├── .gitignore │ └── .metadata ├── music │ ├── elinux │ │ ├── .gitignore │ │ ├── flutter │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ └── runner │ │ │ ├── CMakeLists.txt │ │ │ └── flutter_window.h │ ├── lib │ │ ├── models │ │ │ └── models.dart │ │ ├── app_routes.dart │ │ └── src │ │ │ ├── commons │ │ │ ├── constants.dart │ │ │ └── colors.dart │ │ │ └── features │ │ │ ├── home │ │ │ ├── home_tab.dart │ │ │ ├── data │ │ │ │ └── songs_repository.dart │ │ │ └── widgets │ │ │ │ └── title_widget.dart │ │ │ ├── search_tab │ │ │ └── search_tab.dart │ │ │ ├── playlist_tab │ │ │ └── playlist_tab.dart │ │ │ ├── favourites_tab │ │ │ └── favourites_tab.dart │ │ │ └── presentation │ │ │ ├── songs_icon.dart │ │ │ ├── song_list_view.dart │ │ │ └── artwork_icon.dart │ ├── assets │ │ ├── images │ │ │ ├── delete.png │ │ │ ├── home.png │ │ │ ├── music.png │ │ │ ├── next.png │ │ │ ├── pause.png │ │ │ ├── play.png │ │ │ ├── prev.png │ │ │ ├── queue.png │ │ │ ├── repeat.png │ │ │ ├── search.png │ │ │ ├── sort.png │ │ │ ├── playlist.png │ │ │ ├── shuffle.png │ │ │ ├── tone_arm.png │ │ │ ├── audio_image.png │ │ │ ├── back_icon.png │ │ │ ├── favourites.png │ │ │ ├── list_view.png │ │ │ ├── play_next.png │ │ │ ├── add_to_queue.png │ │ │ ├── swipe_delete.png │ │ │ ├── add_to_playlist.png │ │ │ ├── filled_favourite.png │ │ │ ├── three_dot_icon.png │ │ │ └── dots_three_vertical.png │ │ └── screenshots │ │ │ ├── music1.jpeg │ │ │ ├── music2.jpeg │ │ │ ├── music3.jpeg │ │ │ ├── music4.jpeg │ │ │ └── music5.jpeg │ ├── devtools_options.yaml │ └── LICENSE ├── notes │ ├── elinux │ │ ├── .gitignore │ │ ├── flutter │ │ │ ├── generated_plugin_registrant.dart │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ └── runner │ │ │ ├── CMakeLists.txt │ │ │ └── flutter_window.h │ ├── lib │ │ ├── src │ │ │ ├── commons │ │ │ │ ├── styles │ │ │ │ │ ├── custom_styles.dart │ │ │ │ │ ├── text.dart │ │ │ │ │ ├── styles.dart │ │ │ │ │ └── colors.dart │ │ │ │ └── color_icon.dart │ │ │ ├── constants │ │ │ │ └── constants.dart │ │ │ └── features │ │ │ │ ├── editor │ │ │ │ ├── models │ │ │ │ │ ├── editor_details_models.dart │ │ │ │ │ └── toolbar_models.dart │ │ │ │ ├── toolbar │ │ │ │ │ ├── focus_preserve_button.dart │ │ │ │ │ ├── toolbar_container.dart │ │ │ │ │ └── toolbar_row.dart │ │ │ │ ├── leading_widget │ │ │ │ │ ├── bullet_list_builder.dart │ │ │ │ │ └── number_list_builder.dart │ │ │ │ └── bloc │ │ │ │ │ ├── editor_bloc_provider.dart │ │ │ │ │ └── editor_event.dart │ │ │ │ ├── home │ │ │ │ ├── presentation │ │ │ │ │ ├── empty_notes.dart │ │ │ │ │ └── app_title.dart │ │ │ │ └── data │ │ │ │ │ └── notes_repository.dart │ │ │ │ └── custom_slider.dart │ │ ├── app_routes.dart │ │ └── models │ │ │ └── note_hive.dart │ ├── assets │ │ ├── images │ │ │ ├── slider.png │ │ │ ├── add_icon.png │ │ │ ├── cut_icon.png │ │ │ ├── h1_icon.png │ │ │ ├── h2_icon.png │ │ │ ├── back_icon.png │ │ │ ├── bold_icon.png │ │ │ ├── bullet_icon.png │ │ │ ├── close_icon.png │ │ │ ├── copy_icon.png │ │ │ ├── delete_icon.png │ │ │ ├── italic_icon.png │ │ │ ├── menu_icon.png │ │ │ ├── normal_text.png │ │ │ ├── number_icon.png │ │ │ ├── paste_icon.png │ │ │ ├── redo_icon.png │ │ │ ├── search_icon.png │ │ │ ├── select_all.png │ │ │ ├── share_icon.png │ │ │ ├── undo_icon.png │ │ │ ├── code_block_icon.png │ │ │ ├── highlight_icon.png │ │ │ ├── inline_code_icon.png │ │ │ ├── text_style_icon.png │ │ │ ├── three_dot_icon.png │ │ │ ├── checkbox_list_icon.png │ │ │ ├── select_all_option.png │ │ │ ├── clear_selection_icon.png │ │ │ └── text_underline_icon.png │ │ ├── screenshots │ │ │ ├── notes1.png │ │ │ ├── notes2.png │ │ │ ├── notes3.png │ │ │ ├── notes4.png │ │ │ ├── notes5.png │ │ │ └── notes6.png │ │ └── fonts │ │ │ └── GeistMono-Medium.ttf │ ├── devtools_options.yaml │ ├── .gitignore │ ├── .metadata │ └── LICENSE ├── settings │ ├── elinux │ │ ├── .gitignore │ │ ├── flutter │ │ │ ├── generated_plugin_registrant.dart │ │ │ ├── generated_plugin_registrant.cc │ │ │ ├── generated_plugin_registrant.h │ │ │ └── generated_plugins.cmake │ │ └── runner │ │ │ ├── CMakeLists.txt │ │ │ └── flutter_window.h │ ├── lib │ │ └── src │ │ │ ├── features │ │ │ ├── sound │ │ │ │ ├── models │ │ │ │ │ └── types.dart │ │ │ │ └── presentation │ │ │ │ │ └── Widgets │ │ │ │ │ └── notification_sound.dart │ │ │ ├── about │ │ │ │ ├── data │ │ │ │ │ ├── about_repository.dart │ │ │ │ │ └── about_repository_impl.dart │ │ │ │ ├── bloc │ │ │ │ │ ├── about_event.dart │ │ │ │ │ └── about_bloc.dart │ │ │ │ └── models │ │ │ │ │ └── types.dart │ │ │ ├── battery │ │ │ │ ├── data │ │ │ │ │ └── battery_repository.dart │ │ │ │ ├── blocs │ │ │ │ │ └── battery_event.dart │ │ │ │ └── models │ │ │ │ │ └── battery_info.dart │ │ │ ├── display │ │ │ │ ├── data │ │ │ │ │ └── display_repository.dart │ │ │ │ └── bloc │ │ │ │ │ └── display_state.dart │ │ │ ├── network │ │ │ │ ├── models │ │ │ │ │ ├── access_points.dart │ │ │ │ │ └── saved_networks.dart │ │ │ │ └── presentation │ │ │ │ │ └── ipsettings │ │ │ │ │ └── ip_static_details.dart │ │ │ └── bluetooth │ │ │ │ └── data │ │ │ │ └── bluetooth_repository.dart │ │ │ └── commons │ │ │ ├── styles │ │ │ ├── color.dart │ │ │ ├── text.dart │ │ │ └── custom_styles.dart │ │ │ ├── customWidgets │ │ │ ├── custom_mouse_cursor_widget.dart │ │ │ ├── custom_icon.dart │ │ │ ├── custom_trailing_text.dart │ │ │ ├── label_value_row.dart │ │ │ ├── custom_text_button.dart │ │ │ ├── custom_container.dart │ │ │ └── custom_loader.dart │ │ │ └── left_transitions.dart │ ├── .vscode │ │ ├── settings.json │ │ └── launch.json │ ├── assets │ │ ├── images │ │ │ ├── car.png │ │ │ ├── mic.png │ │ │ ├── tv.png │ │ │ ├── trash.png │ │ │ ├── add_icon.png │ │ │ ├── loader.png │ │ │ ├── mic_off.png │ │ │ ├── mic_on.png │ │ │ ├── mobile.png │ │ │ ├── settings.png │ │ │ ├── speaker.png │ │ │ ├── sun_icon.png │ │ │ ├── theme_1.png │ │ │ ├── theme_2.png │ │ │ ├── theme_3.png │ │ │ ├── wifi_low.png │ │ │ ├── about_icon.png │ │ │ ├── apps_icon.png │ │ │ ├── back_icon.png │ │ │ ├── check_icon.png │ │ │ ├── comet_icon.png │ │ │ ├── info_icon.png │ │ │ ├── sound_icon.png │ │ │ ├── tick_icon.png │ │ │ ├── volume_off.png │ │ │ ├── volume_on.png │ │ │ ├── wifi_high.png │ │ │ ├── wifi_icon.png │ │ │ ├── wifi_none.png │ │ │ ├── audio_headset.png │ │ │ ├── battery_icon.png │ │ │ ├── big_wallpaper.png │ │ │ ├── camera_icon.png │ │ │ ├── charging_icon.png │ │ │ ├── delete_icon.png │ │ │ ├── device_icon.png │ │ │ ├── display_icon.png │ │ │ ├── language_icon.png │ │ │ ├── network_icon.png │ │ │ ├── search_icon.png │ │ │ ├── unlink_icon.png │ │ │ ├── wifi_medium.png │ │ │ ├── wireless_add.png │ │ │ ├── appearance_icon.png │ │ │ ├── bluetooth_icon.png │ │ │ ├── date_time_icon.png │ │ │ ├── wifi_connected.png │ │ │ ├── add_rounded_square.png │ │ │ ├── notification_icon.png │ │ │ ├── right_arrow_button.png │ │ │ ├── wireless_low_icon.png │ │ │ ├── wireless_weak_icon.png │ │ │ ├── wireless_strong_icon.png │ │ │ ├── bluetooth_setting_icon.png │ │ │ ├── settiings_diabled_icon.png │ │ │ ├── bluetooth_connection_icon.png │ │ │ ├── secured_wireless_disabled.png │ │ │ ├── secured_wireless_low_icon.png │ │ │ ├── secured_wireless_off_icon.png │ │ │ ├── secured_wireless_strong_icon.png │ │ │ └── secured_wireless_weak_icon.png │ │ └── screenshots │ │ │ ├── settings_menu.png │ │ │ └── network_settings.png │ ├── devtools_options.yaml │ ├── .gitignore │ └── .metadata └── camera │ ├── .vscode │ └── launch.json │ ├── README.md │ ├── .gitignore │ └── .metadata ├── shell └── crates │ ├── running_apps │ ├── src │ │ ├── models │ │ │ └── mod.rs │ │ ├── config │ │ │ ├── mod.rs │ │ │ └── constants.rs │ │ ├── services │ │ │ └── mod.rs │ │ ├── ui │ │ │ └── components │ │ │ │ └── mod.rs │ │ └── main.rs │ └── Cargo.toml │ ├── universal_search │ ├── src │ │ ├── data │ │ │ └── mod.rs │ │ └── main.rs │ └── Cargo.toml │ ├── launcher │ └── src │ │ ├── main.rs │ │ └── lib.rs │ ├── status_bar │ ├── src │ │ ├── services │ │ │ ├── mod.rs │ │ │ └── bluetooth_sync.rs │ │ ├── main.rs │ │ └── events │ │ │ └── mod.rs │ └── Cargo.toml │ ├── settings_drawer │ ├── src │ │ ├── ui │ │ │ └── widgets │ │ │ │ └── mod.rs │ │ ├── main.rs │ │ └── services │ │ │ ├── brightness_sync.rs │ │ │ ├── mod.rs │ │ │ ├── sound_sync.rs │ │ │ ├── bluetooth_sync.rs │ │ │ └── network_sync.rs │ └── Cargo.toml │ ├── app_drawer │ ├── src │ │ ├── ui │ │ │ ├── utils │ │ │ │ └── mod.rs │ │ │ └── widgets │ │ │ │ └── mod.rs │ │ ├── lib.rs │ │ └── models.rs │ └── Cargo.toml │ ├── commons │ ├── src │ │ ├── lib.rs │ │ └── assets.rs │ └── Cargo.toml │ ├── homescreen │ ├── src │ │ └── main.rs │ └── Cargo.toml │ ├── types │ ├── Cargo.toml │ └── src │ │ └── lib.rs │ ├── settings │ ├── Cargo.toml │ └── src │ │ └── lib.rs │ ├── theme │ └── Cargo.toml │ ├── dispatcher │ └── Cargo.toml │ └── shell_state │ └── Cargo.toml ├── tools └── README.md ├── utils └── README.md ├── shared ├── README.md └── hw-buttons │ ├── src │ └── lib.rs │ └── Cargo.toml ├── services ├── desktop │ ├── src │ │ ├── handlers │ │ │ └── mod.rs │ │ └── main.rs │ └── README.md ├── system │ └── src │ │ ├── interfaces │ │ └── mod.rs │ │ ├── lib.rs │ │ └── error.rs ├── conf │ ├── src │ │ └── lib.rs │ └── examples │ │ └── client.rs ├── search │ ├── server │ │ ├── src │ │ │ ├── lib.rs │ │ │ └── error.rs │ │ └── Cargo.toml │ ├── files │ │ ├── src │ │ │ ├── error.rs │ │ │ └── lib.rs │ │ └── Cargo.toml │ ├── sources │ │ ├── src │ │ │ └── lib.rs │ │ └── Cargo.toml │ ├── app_actions │ │ ├── src │ │ │ └── lib.rs │ │ └── Cargo.toml │ └── apps │ │ └── Cargo.toml └── extensions │ ├── README.md │ └── Cargo.toml └── assets └── icons ├── app-drawer ├── x.png ├── info.png ├── category.png ├── default-app.png └── search.svg ├── running-apps ├── files.png ├── kitty.png ├── mecha.png ├── bg-app.png ├── firefox.png ├── navbar.png └── chromium.png ├── settings-drawer ├── navbar.png ├── power.svg ├── screen-recording-off.svg ├── screen-recording-on.svg ├── brightness-high.svg ├── cell-signal-high.svg ├── cell-signal-none.svg ├── bluetooth-on.svg ├── bluetooth-off.svg ├── microphone-on.svg ├── wireless-full.svg ├── brightness-medium.svg ├── wireless-off.svg ├── wireless-on.svg ├── brightness-low.svg ├── wireless-low.svg ├── wireless-high.svg ├── rotation-off.svg └── rotation-on.svg ├── universal-search ├── ardour.png ├── github.png ├── navbar.png ├── chromium.png ├── firefox.png ├── x.svg ├── search.svg └── arrow-up-right.svg └── status-bar ├── wireless-high.svg ├── wireless-on.svg ├── wireless-low.svg └── wireless-medium.svg /dbus/mechanix/extensions/.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /apps/files/elinux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | -------------------------------------------------------------------------------- /apps/music/elinux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | -------------------------------------------------------------------------------- /apps/notes/elinux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | -------------------------------------------------------------------------------- /apps/notes/lib/src/commons/styles/custom_styles.dart: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/settings/elinux/.gitignore: -------------------------------------------------------------------------------- 1 | flutter/ephemeral/ 2 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/sound/models/types.dart: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /shell/crates/running_apps/src/models/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod models; 2 | -------------------------------------------------------------------------------- /shell/crates/universal_search/src/data/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod data; 2 | -------------------------------------------------------------------------------- /tools/README.md: -------------------------------------------------------------------------------- 1 | ## Tools 2 | This directory will contain tools -------------------------------------------------------------------------------- /utils/README.md: -------------------------------------------------------------------------------- 1 | ## Tools 2 | This directory will contain utils -------------------------------------------------------------------------------- /shared/README.md: -------------------------------------------------------------------------------- 1 | ## Tools 2 | This directory will contain shared libs -------------------------------------------------------------------------------- /shell/crates/running_apps/src/config/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod constants; 2 | -------------------------------------------------------------------------------- /dbus/mechanix/extensions/src/detection/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod service; 2 | pub mod i2c; -------------------------------------------------------------------------------- /dbus/mechanix/extensions/src/proxy/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod extensions; 2 | pub mod reciever; -------------------------------------------------------------------------------- /services/desktop/src/handlers/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod display; 2 | pub mod hw_buttons; 3 | -------------------------------------------------------------------------------- /shell/crates/launcher/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | launcher::run(); 3 | } 4 | -------------------------------------------------------------------------------- /apps/settings/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cmake.ignoreCMakeListsMissing": true 3 | } 4 | -------------------------------------------------------------------------------- /apps/music/lib/models/models.dart: -------------------------------------------------------------------------------- 1 | enum MusicTabs { home, search, music, playlists, favorites } 2 | -------------------------------------------------------------------------------- /services/system/src/interfaces/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod hardware_buttons; 2 | pub mod haptic_feedback; 3 | -------------------------------------------------------------------------------- /shell/crates/running_apps/src/services/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod app_manager; 2 | pub mod desktop_entries; -------------------------------------------------------------------------------- /shell/crates/running_apps/src/ui/components/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod footer; 2 | pub mod card; 3 | pub mod scroller; -------------------------------------------------------------------------------- /assets/icons/app-drawer/x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/app-drawer/x.png -------------------------------------------------------------------------------- /apps/files/assets/images/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/add.png -------------------------------------------------------------------------------- /apps/files/assets/images/csv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/csv.png -------------------------------------------------------------------------------- /apps/files/assets/images/eye.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/eye.png -------------------------------------------------------------------------------- /apps/files/assets/images/pdf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/pdf.png -------------------------------------------------------------------------------- /apps/files/assets/images/usb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/usb.png -------------------------------------------------------------------------------- /assets/icons/app-drawer/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/app-drawer/info.png -------------------------------------------------------------------------------- /dbus/freedesktop/bluez/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod errors; 2 | pub mod interfaces; 3 | pub mod proxies; 4 | pub mod service; 5 | -------------------------------------------------------------------------------- /dbus/freedesktop/upower/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod errors; 2 | pub mod interfaces; 3 | pub mod proxies; 4 | pub mod service; 5 | -------------------------------------------------------------------------------- /apps/files/assets/images/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/arrow.png -------------------------------------------------------------------------------- /apps/files/assets/images/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/back.png -------------------------------------------------------------------------------- /apps/files/assets/images/copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/copy.png -------------------------------------------------------------------------------- /apps/files/assets/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/delete.png -------------------------------------------------------------------------------- /apps/files/assets/images/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/file.png -------------------------------------------------------------------------------- /apps/files/assets/images/fold.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/fold.png -------------------------------------------------------------------------------- /apps/files/assets/images/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/grid.png -------------------------------------------------------------------------------- /apps/files/assets/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/home.png -------------------------------------------------------------------------------- /apps/files/assets/images/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/info.png -------------------------------------------------------------------------------- /apps/files/assets/images/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/list.png -------------------------------------------------------------------------------- /apps/files/assets/images/move.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/move.png -------------------------------------------------------------------------------- /apps/files/assets/images/paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/paste.png -------------------------------------------------------------------------------- /apps/files/assets/images/recent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/recent.png -------------------------------------------------------------------------------- /apps/files/assets/images/rename.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/rename.png -------------------------------------------------------------------------------- /apps/files/assets/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/search.png -------------------------------------------------------------------------------- /apps/music/assets/images/delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/delete.png -------------------------------------------------------------------------------- /apps/music/assets/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/home.png -------------------------------------------------------------------------------- /apps/music/assets/images/music.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/music.png -------------------------------------------------------------------------------- /apps/music/assets/images/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/next.png -------------------------------------------------------------------------------- /apps/music/assets/images/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/pause.png -------------------------------------------------------------------------------- /apps/music/assets/images/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/play.png -------------------------------------------------------------------------------- /apps/music/assets/images/prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/prev.png -------------------------------------------------------------------------------- /apps/music/assets/images/queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/queue.png -------------------------------------------------------------------------------- /apps/music/assets/images/repeat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/repeat.png -------------------------------------------------------------------------------- /apps/music/assets/images/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/search.png -------------------------------------------------------------------------------- /apps/music/assets/images/sort.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/sort.png -------------------------------------------------------------------------------- /apps/notes/assets/images/slider.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/slider.png -------------------------------------------------------------------------------- /apps/settings/assets/images/car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/car.png -------------------------------------------------------------------------------- /apps/settings/assets/images/mic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/mic.png -------------------------------------------------------------------------------- /apps/settings/assets/images/tv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/tv.png -------------------------------------------------------------------------------- /assets/icons/running-apps/files.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/running-apps/files.png -------------------------------------------------------------------------------- /assets/icons/running-apps/kitty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/running-apps/kitty.png -------------------------------------------------------------------------------- /assets/icons/running-apps/mecha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/running-apps/mecha.png -------------------------------------------------------------------------------- /dbus/freedesktop/networkmanager/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod errors; 2 | pub mod interfaces; 3 | pub mod proxies; 4 | pub mod service; 5 | -------------------------------------------------------------------------------- /apps/files/assets/images/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/arrow_up.png -------------------------------------------------------------------------------- /apps/files/assets/images/compress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/compress.png -------------------------------------------------------------------------------- /apps/files/assets/images/extract.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/extract.png -------------------------------------------------------------------------------- /apps/files/assets/images/refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/refresh.png -------------------------------------------------------------------------------- /apps/files/assets/images/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/terminal.png -------------------------------------------------------------------------------- /apps/files/assets/images/x_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/x_circle.png -------------------------------------------------------------------------------- /apps/music/assets/images/playlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/playlist.png -------------------------------------------------------------------------------- /apps/music/assets/images/shuffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/shuffle.png -------------------------------------------------------------------------------- /apps/music/assets/images/tone_arm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/tone_arm.png -------------------------------------------------------------------------------- /apps/notes/assets/images/add_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/add_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/cut_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/cut_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/h1_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/h1_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/h2_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/h2_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/trash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/trash.png -------------------------------------------------------------------------------- /assets/icons/app-drawer/category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/app-drawer/category.png -------------------------------------------------------------------------------- /assets/icons/running-apps/bg-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/running-apps/bg-app.png -------------------------------------------------------------------------------- /assets/icons/running-apps/firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/running-apps/firefox.png -------------------------------------------------------------------------------- /assets/icons/running-apps/navbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/running-apps/navbar.png -------------------------------------------------------------------------------- /apps/files/assets/images/audio_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/audio_file.png -------------------------------------------------------------------------------- /apps/files/assets/images/downloads.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/downloads.png -------------------------------------------------------------------------------- /apps/files/assets/images/excel_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/excel_file.png -------------------------------------------------------------------------------- /apps/files/assets/images/eye_slash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/eye_slash.png -------------------------------------------------------------------------------- /apps/files/assets/images/hard_drive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/hard_drive.png -------------------------------------------------------------------------------- /apps/files/assets/images/image_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/image_file.png -------------------------------------------------------------------------------- /apps/files/assets/images/list_checks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/list_checks.png -------------------------------------------------------------------------------- /apps/files/assets/images/text_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/text_file.png -------------------------------------------------------------------------------- /apps/files/assets/images/unfold_dir.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/unfold_dir.png -------------------------------------------------------------------------------- /apps/files/assets/images/unfold_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/unfold_more.png -------------------------------------------------------------------------------- /apps/files/assets/images/video_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/video_file.png -------------------------------------------------------------------------------- /apps/music/assets/images/audio_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/audio_image.png -------------------------------------------------------------------------------- /apps/music/assets/images/back_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/back_icon.png -------------------------------------------------------------------------------- /apps/music/assets/images/favourites.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/favourites.png -------------------------------------------------------------------------------- /apps/music/assets/images/list_view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/list_view.png -------------------------------------------------------------------------------- /apps/music/assets/images/play_next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/play_next.png -------------------------------------------------------------------------------- /apps/notes/assets/images/back_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/back_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/bold_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/bold_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/bullet_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/bullet_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/close_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/close_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/copy_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/copy_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/delete_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/delete_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/italic_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/italic_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/menu_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/menu_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/normal_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/normal_text.png -------------------------------------------------------------------------------- /apps/notes/assets/images/number_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/number_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/paste_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/paste_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/redo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/redo_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/search_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/search_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/select_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/select_all.png -------------------------------------------------------------------------------- /apps/notes/assets/images/share_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/share_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/undo_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/undo_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/screenshots/notes1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/screenshots/notes1.png -------------------------------------------------------------------------------- /apps/notes/assets/screenshots/notes2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/screenshots/notes2.png -------------------------------------------------------------------------------- /apps/notes/assets/screenshots/notes3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/screenshots/notes3.png -------------------------------------------------------------------------------- /apps/notes/assets/screenshots/notes4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/screenshots/notes4.png -------------------------------------------------------------------------------- /apps/notes/assets/screenshots/notes5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/screenshots/notes5.png -------------------------------------------------------------------------------- /apps/notes/assets/screenshots/notes6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/screenshots/notes6.png -------------------------------------------------------------------------------- /apps/settings/assets/images/add_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/add_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/loader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/loader.png -------------------------------------------------------------------------------- /apps/settings/assets/images/mic_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/mic_off.png -------------------------------------------------------------------------------- /apps/settings/assets/images/mic_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/mic_on.png -------------------------------------------------------------------------------- /apps/settings/assets/images/mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/mobile.png -------------------------------------------------------------------------------- /apps/settings/assets/images/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/settings.png -------------------------------------------------------------------------------- /apps/settings/assets/images/speaker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/speaker.png -------------------------------------------------------------------------------- /apps/settings/assets/images/sun_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/sun_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/theme_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/theme_1.png -------------------------------------------------------------------------------- /apps/settings/assets/images/theme_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/theme_2.png -------------------------------------------------------------------------------- /apps/settings/assets/images/theme_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/theme_3.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wifi_low.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wifi_low.png -------------------------------------------------------------------------------- /assets/icons/app-drawer/default-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/app-drawer/default-app.png -------------------------------------------------------------------------------- /assets/icons/running-apps/chromium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/running-apps/chromium.png -------------------------------------------------------------------------------- /assets/icons/settings-drawer/navbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/settings-drawer/navbar.png -------------------------------------------------------------------------------- /assets/icons/universal-search/ardour.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/universal-search/ardour.png -------------------------------------------------------------------------------- /assets/icons/universal-search/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/universal-search/github.png -------------------------------------------------------------------------------- /assets/icons/universal-search/navbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/universal-search/navbar.png -------------------------------------------------------------------------------- /shared/hw-buttons/src/lib.rs: -------------------------------------------------------------------------------- 1 | mod hw_button; 2 | pub use hw_button::HwButton; 3 | 4 | mod utils; 5 | pub use utils::{Key, KeyEvent}; 6 | -------------------------------------------------------------------------------- /shell/crates/status_bar/src/services/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod bluetooth_sync; 2 | 3 | pub use bluetooth_sync::sync_bluetooth_connected_status; 4 | -------------------------------------------------------------------------------- /apps/files/assets/images/archive_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/archive_file.png -------------------------------------------------------------------------------- /apps/files/assets/images/create_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/create_folder.png -------------------------------------------------------------------------------- /apps/music/assets/images/add_to_queue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/add_to_queue.png -------------------------------------------------------------------------------- /apps/music/assets/images/swipe_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/swipe_delete.png -------------------------------------------------------------------------------- /apps/music/assets/screenshots/music1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/screenshots/music1.jpeg -------------------------------------------------------------------------------- /apps/music/assets/screenshots/music2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/screenshots/music2.jpeg -------------------------------------------------------------------------------- /apps/music/assets/screenshots/music3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/screenshots/music3.jpeg -------------------------------------------------------------------------------- /apps/music/assets/screenshots/music4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/screenshots/music4.jpeg -------------------------------------------------------------------------------- /apps/music/assets/screenshots/music5.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/screenshots/music5.jpeg -------------------------------------------------------------------------------- /apps/settings/assets/images/about_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/about_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/apps_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/apps_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/back_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/back_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/check_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/check_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/comet_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/comet_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/info_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/info_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/sound_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/sound_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/tick_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/tick_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/volume_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/volume_off.png -------------------------------------------------------------------------------- /apps/settings/assets/images/volume_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/volume_on.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wifi_high.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wifi_high.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wifi_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wifi_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wifi_none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wifi_none.png -------------------------------------------------------------------------------- /assets/icons/universal-search/chromium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/universal-search/chromium.png -------------------------------------------------------------------------------- /assets/icons/universal-search/firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/assets/icons/universal-search/firefox.png -------------------------------------------------------------------------------- /apps/files/assets/images/home_documents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/home_documents.png -------------------------------------------------------------------------------- /apps/files/assets/images/list_checks_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/list_checks_all.png -------------------------------------------------------------------------------- /apps/files/assets/images/sort_ascending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/sort_ascending.png -------------------------------------------------------------------------------- /apps/files/assets/images/sort_descending.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/sort_descending.png -------------------------------------------------------------------------------- /apps/files/lib/app_route.dart: -------------------------------------------------------------------------------- 1 | class AppRoutes { 2 | static const files = '/files'; 3 | static const searchFiles = '/search-files'; 4 | } 5 | -------------------------------------------------------------------------------- /apps/music/assets/images/add_to_playlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/add_to_playlist.png -------------------------------------------------------------------------------- /apps/music/assets/images/filled_favourite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/filled_favourite.png -------------------------------------------------------------------------------- /apps/music/assets/images/three_dot_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/three_dot_icon.png -------------------------------------------------------------------------------- /apps/music/lib/app_routes.dart: -------------------------------------------------------------------------------- 1 | class AppRoutes { 2 | static const searchPage = '/search'; 3 | static const audioPlayer = '/audioPlayer'; 4 | } -------------------------------------------------------------------------------- /apps/notes/assets/fonts/GeistMono-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/fonts/GeistMono-Medium.ttf -------------------------------------------------------------------------------- /apps/notes/assets/images/code_block_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/code_block_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/highlight_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/highlight_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/inline_code_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/inline_code_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/text_style_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/text_style_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/three_dot_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/three_dot_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/audio_headset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/audio_headset.png -------------------------------------------------------------------------------- /apps/settings/assets/images/battery_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/battery_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/big_wallpaper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/big_wallpaper.png -------------------------------------------------------------------------------- /apps/settings/assets/images/camera_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/camera_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/charging_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/charging_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/delete_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/delete_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/device_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/device_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/display_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/display_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/language_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/language_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/network_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/network_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/search_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/search_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/unlink_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/unlink_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wifi_medium.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wifi_medium.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wireless_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wireless_add.png -------------------------------------------------------------------------------- /services/conf/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod server; 2 | pub mod database; 3 | pub mod validator; 4 | pub mod cli; 5 | pub mod utils; 6 | pub mod error; 7 | -------------------------------------------------------------------------------- /apps/files/assets/screenshots/other_options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/screenshots/other_options.png -------------------------------------------------------------------------------- /apps/notes/assets/images/checkbox_list_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/checkbox_list_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/select_all_option.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/select_all_option.png -------------------------------------------------------------------------------- /apps/settings/assets/images/appearance_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/appearance_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/bluetooth_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/bluetooth_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/date_time_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/date_time_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wifi_connected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wifi_connected.png -------------------------------------------------------------------------------- /shell/crates/settings_drawer/src/ui/widgets/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod icon_button; 2 | pub mod slider; 3 | 4 | pub use icon_button::*; 5 | pub use slider::*; 6 | -------------------------------------------------------------------------------- /apps/files/assets/images/dots_three_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/images/dots_three_vertical.png -------------------------------------------------------------------------------- /apps/files/assets/screenshots/file_operations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/screenshots/file_operations.png -------------------------------------------------------------------------------- /apps/files/assets/screenshots/files_app_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/screenshots/files_app_menu.png -------------------------------------------------------------------------------- /apps/files/assets/screenshots/search_operation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/assets/screenshots/search_operation.png -------------------------------------------------------------------------------- /apps/music/assets/images/dots_three_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/music/assets/images/dots_three_vertical.png -------------------------------------------------------------------------------- /apps/notes/assets/images/clear_selection_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/clear_selection_icon.png -------------------------------------------------------------------------------- /apps/notes/assets/images/text_underline_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/notes/assets/images/text_underline_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/add_rounded_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/add_rounded_square.png -------------------------------------------------------------------------------- /apps/settings/assets/images/notification_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/notification_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/right_arrow_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/right_arrow_button.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wireless_low_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wireless_low_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/wireless_weak_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wireless_weak_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/screenshots/settings_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/screenshots/settings_menu.png -------------------------------------------------------------------------------- /dbus/mechanix/extensions/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod proxy; 2 | pub mod interface; 3 | pub mod events; 4 | pub mod detection; 5 | pub mod device; 6 | pub mod errors; -------------------------------------------------------------------------------- /dbus/mechanix/system/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod display_client; 2 | pub mod hw_button_client; 3 | pub mod service; 4 | 5 | pub use mechanix_hw_buttons::KeyEvent; 6 | -------------------------------------------------------------------------------- /apps/settings/assets/images/wireless_strong_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/wireless_strong_icon.png -------------------------------------------------------------------------------- /shell/crates/app_drawer/src/ui/utils/mod.rs: -------------------------------------------------------------------------------- 1 | mod desktop_apps; 2 | 3 | pub mod prelude { 4 | pub use super::desktop_apps::{DesktopApp, DesktopApps}; 5 | } 6 | -------------------------------------------------------------------------------- /apps/notes/lib/app_routes.dart: -------------------------------------------------------------------------------- 1 | class AppRoutes { 2 | static const createEditNotes = '/create-edit-notes'; 3 | static const searchNotes = '/search-notes'; 4 | } 5 | -------------------------------------------------------------------------------- /apps/settings/assets/images/bluetooth_setting_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/bluetooth_setting_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/settiings_diabled_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/settiings_diabled_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/screenshots/network_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/screenshots/network_settings.png -------------------------------------------------------------------------------- /services/search/server/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod error; 2 | pub mod service; 3 | pub use apps::AppInfo; 4 | pub use files::SearchResult; 5 | pub use app_actions::AppActions; -------------------------------------------------------------------------------- /apps/settings/assets/images/bluetooth_connection_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/bluetooth_connection_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/secured_wireless_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/secured_wireless_disabled.png -------------------------------------------------------------------------------- /apps/settings/assets/images/secured_wireless_low_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/secured_wireless_low_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/secured_wireless_off_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/secured_wireless_off_icon.png -------------------------------------------------------------------------------- /apps/files/elinux/flutter/third_party/libpdfium/libpdfium.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/files/elinux/flutter/third_party/libpdfium/libpdfium.so -------------------------------------------------------------------------------- /apps/settings/assets/images/secured_wireless_strong_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/secured_wireless_strong_icon.png -------------------------------------------------------------------------------- /apps/settings/assets/images/secured_wireless_weak_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mecha-org/mechanix-gui/HEAD/apps/settings/assets/images/secured_wireless_weak_icon.png -------------------------------------------------------------------------------- /dbus/mechanix/system/README.md: -------------------------------------------------------------------------------- 1 | ## Mechanix System D-Bus Client 2 | 3 | Crate will connect to the system bus ```org.mechanix.services.Display``` and send D-Bus method calls. 4 | -------------------------------------------------------------------------------- /services/system/src/lib.rs: -------------------------------------------------------------------------------- 1 | mod interfaces; 2 | 3 | pub use interfaces::{ 4 | hardware_buttons::hw_buttons_notification_stream, hardware_buttons::HwButtonInterface, 5 | }; 6 | -------------------------------------------------------------------------------- /apps/notes/lib/src/constants/constants.dart: -------------------------------------------------------------------------------- 1 | class Constants { 2 | static const String tableName = "notesTablev18"; 3 | static const Duration debounceDuration = Duration(milliseconds: 300); 4 | } 5 | -------------------------------------------------------------------------------- /dbus/mechanix/extensions/examples/service.rs: -------------------------------------------------------------------------------- 1 | use tokio; 2 | use extensions::interface::ExtensionService; 3 | #[tokio::main] 4 | async fn main() 5 | { 6 | ExtensionService::start_service().await; 7 | } -------------------------------------------------------------------------------- /apps/files/lib/src/commons/styles/color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const selectColor = Color.fromRGBO(45, 138, 255, 1); 4 | const dangerColor = Color.fromRGBO(243, 55, 66, 1); 5 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/styles/color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const selectColor = Color.fromRGBO(45, 138, 255, 1); 4 | const dangerColor = Color.fromRGBO(243, 55, 66, 1); 5 | -------------------------------------------------------------------------------- /apps/files/devtools_options.yaml: -------------------------------------------------------------------------------- 1 | description: This file stores settings for Dart & Flutter DevTools. 2 | documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states 3 | extensions: 4 | -------------------------------------------------------------------------------- /apps/music/devtools_options.yaml: -------------------------------------------------------------------------------- 1 | description: This file stores settings for Dart & Flutter DevTools. 2 | documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states 3 | extensions: 4 | -------------------------------------------------------------------------------- /apps/notes/devtools_options.yaml: -------------------------------------------------------------------------------- 1 | description: This file stores settings for Dart & Flutter DevTools. 2 | documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states 3 | extensions: 4 | -------------------------------------------------------------------------------- /services/search/files/src/error.rs: -------------------------------------------------------------------------------- 1 | use thiserror::Error; 2 | 3 | #[derive(Error, Debug)] 4 | pub enum FileSearchError { 5 | #[error("Failed to build connection: {0}")] 6 | FailedBuildConnection(zbus::Error), 7 | } 8 | -------------------------------------------------------------------------------- /apps/settings/devtools_options.yaml: -------------------------------------------------------------------------------- 1 | description: This file stores settings for Dart & Flutter DevTools. 2 | documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states 3 | extensions: 4 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/about/data/about_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:mechanix_settings/src/features/about/models/types.dart'; 2 | 3 | abstract class AboutRepository { 4 | Future getDeviceDetails(); 5 | } 6 | -------------------------------------------------------------------------------- /dbus/mechanix/extensions/config.toml: -------------------------------------------------------------------------------- 1 | [[extensions]] 2 | unique_id = "ea:a9:cd:4d:9f:47" 3 | name = "Toad One" 4 | connection_key = "KEY_A" 5 | 6 | [[extensions]] 7 | unique_id = "Unknown" 8 | name = "AT 2 Keyboard" 9 | connection_key = "KEY_A" -------------------------------------------------------------------------------- /shell/crates/app_drawer/src/lib.rs: -------------------------------------------------------------------------------- 1 | mod models; 2 | pub mod ui; 3 | pub mod prelude { 4 | pub use crate::models::*; 5 | pub use crate::ui::AppDrawer; 6 | pub use crate::ui::icon::*; 7 | pub use crate::ui::input::*; 8 | } 9 | -------------------------------------------------------------------------------- /apps/files/elinux/flutter/generated_plugin_registrant.dart: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // ignore_for_file: lines_longer_than_80_chars 6 | 7 | 8 | // ignore: public_member_api_docs 9 | void registerPlugins() { 10 | } 11 | -------------------------------------------------------------------------------- /apps/notes/elinux/flutter/generated_plugin_registrant.dart: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // ignore_for_file: lines_longer_than_80_chars 6 | 7 | 8 | // ignore: public_member_api_docs 9 | void registerPlugins() { 10 | } 11 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/models/editor_details_models.dart: -------------------------------------------------------------------------------- 1 | class EditorPayload { 2 | final String id; 3 | final String content; 4 | 5 | EditorPayload({ 6 | required this.id, 7 | required this.content, 8 | }); 9 | } 10 | -------------------------------------------------------------------------------- /shell/crates/commons/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod assets; 2 | pub mod toml_merge; 3 | pub mod widgets; 4 | 5 | pub mod prelude { 6 | pub use crate::assets::Assets; 7 | pub use crate::toml_merge::*; 8 | pub use crate::widgets::Wing; 9 | } 10 | -------------------------------------------------------------------------------- /apps/settings/elinux/flutter/generated_plugin_registrant.dart: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // ignore_for_file: lines_longer_than_80_chars 6 | 7 | 8 | // ignore: public_member_api_docs 9 | void registerPlugins() { 10 | } 11 | -------------------------------------------------------------------------------- /shell/crates/app_drawer/src/models.rs: -------------------------------------------------------------------------------- 1 | use crate::ui::utils::prelude::DesktopApps; 2 | use gpui::*; 3 | 4 | #[derive(Default, Clone)] 5 | pub struct AppDrawerState { 6 | pub apps: DesktopApps, 7 | } 8 | 9 | impl Global for AppDrawerState {} 10 | -------------------------------------------------------------------------------- /assets/icons/universal-search/x.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /shell/crates/app_drawer/src/ui/widgets/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod icon_button; 2 | mod sub_window; 3 | mod text_button; 4 | 5 | pub use icon_button::*; 6 | pub use sub_window::*; 7 | pub use text_button::*; 8 | 9 | mod bottom_sheet; 10 | pub use bottom_sheet::*; 11 | -------------------------------------------------------------------------------- /apps/files/elinux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /apps/music/elinux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /apps/notes/elinux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /dbus/mechanix/extensions/src/events/mod.rs: -------------------------------------------------------------------------------- 1 | use serde::{Deserialize, Serialize}; 2 | 3 | use crate::device::Device; 4 | 5 | #[derive(Debug,Serialize,Deserialize)] 6 | pub enum ExtensionServiceEvent { 7 | Added(Device), 8 | Removed(Device), 9 | } 10 | 11 | -------------------------------------------------------------------------------- /apps/music/lib/src/commons/constants.dart: -------------------------------------------------------------------------------- 1 | class TableName { 2 | static const String songsInfoTable = "musicSongsTablev3"; 3 | // static const String pathToDb = "/tmp/mechanix_notes"; 4 | } 5 | 6 | const audioExt = ['.mp3', '.wav', '.flac', '.m4a', '.aac', '.ogg', '.opus']; 7 | -------------------------------------------------------------------------------- /apps/settings/elinux/flutter/generated_plugin_registrant.cc: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | // clang-format off 6 | 7 | #include "generated_plugin_registrant.h" 8 | 9 | 10 | void RegisterPlugins(flutter::PluginRegistry* registry) { 11 | } 12 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/about/bloc/about_event.dart: -------------------------------------------------------------------------------- 1 | part of 'about_bloc.dart'; 2 | 3 | class AboutEvent extends Equatable { 4 | const AboutEvent(); 5 | 6 | @override 7 | List get props => []; 8 | } 9 | 10 | class InitializeAbout extends AboutEvent {} 11 | -------------------------------------------------------------------------------- /services/desktop/README.md: -------------------------------------------------------------------------------- 1 | ## Mechanix Desktop Session Services 2 | 3 | ### Display 4 | 5 | This service is responsible for watching the brightness setting via D-Bus and applying it to the system. 6 | 7 | ### Hw Buttons 8 | 9 | We are subscribing to the hw button events: power and home. -------------------------------------------------------------------------------- /apps/files/lib/src/features/files/models/file_location.dart: -------------------------------------------------------------------------------- 1 | class FileLocation { 2 | final String icon; 3 | final String label; 4 | final String path; 5 | 6 | FileLocation({ 7 | required this.icon, 8 | required this.label, 9 | required this.path, 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /shell/crates/homescreen/src/main.rs: -------------------------------------------------------------------------------- 1 | use commons::prelude::*; 2 | use homescreen::prelude::*; 3 | 4 | fn main() { 5 | let application = gpui::Application::new().with_assets(Assets {}); 6 | application.run(|cx| { 7 | run_app(cx); 8 | cx.activate(true); 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/home/home_tab.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class HomeTab extends StatelessWidget { 4 | const HomeTab({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Container(child: Text("Home")); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/crates/status_bar/src/main.rs: -------------------------------------------------------------------------------- 1 | use commons::prelude::*; 2 | use gpui::*; 3 | use status_bar::prelude::*; 4 | 5 | fn main() { 6 | let application = Application::new().with_assets(Assets {}); 7 | application.run(|cx| { 8 | run_app(cx); 9 | cx.activate(true); 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/search_tab/search_tab.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SearchTab extends StatelessWidget { 4 | const SearchTab({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Container(child: Text("Search Tab")); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/crates/settings_drawer/src/main.rs: -------------------------------------------------------------------------------- 1 | use commons::prelude::*; 2 | use gpui::*; 3 | use settings_drawer::prelude::*; 4 | fn main() { 5 | let application = Application::new().with_assets(Assets {}); 6 | application.run(|cx| { 7 | run_app(cx); 8 | cx.activate(true); 9 | }); 10 | } 11 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/playlist_tab/playlist_tab.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class PlaylistTab extends StatelessWidget { 4 | const PlaylistTab({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Container(child: Text("Playlist")); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /shell/crates/universal_search/src/main.rs: -------------------------------------------------------------------------------- 1 | use commons::prelude::*; 2 | use gpui::*; 3 | use universal_search::prelude::*; 4 | 5 | fn main() { 6 | let application = Application::new().with_assets(Assets {}); 7 | application.run(|cx| { 8 | run_app(cx); 9 | cx.activate(true); 10 | }); 11 | } 12 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/favourites_tab/favourites_tab.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FavouritesTab extends StatelessWidget { 4 | const FavouritesTab({super.key}); 5 | 6 | @override 7 | Widget build(BuildContext context) { 8 | return Container(child: Text("Favourites")); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /apps/files/lib/src/services/media_kit_manager.dart: -------------------------------------------------------------------------------- 1 | import 'package:media_kit/media_kit.dart'; 2 | 3 | class MediaKitManager { 4 | static bool _initialized = false; 5 | 6 | static Future init() async { 7 | if (!_initialized) { 8 | MediaKit.ensureInitialized(); 9 | _initialized = true; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apps/files/lib/src/features/files/presentation/view_mode_notifier.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ViewModeNotifier extends ValueNotifier { 4 | // false = list view, true = grid view 5 | ViewModeNotifier() : super(false); 6 | } 7 | 8 | // Global singleton 9 | final viewModeNotifier = ViewModeNotifier(); 10 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/battery/data/battery_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:mechanix_settings/src/features/battery/models/battery_info.dart'; 2 | 3 | abstract class BatteryRepository { 4 | Future getBatteryInfo(); 5 | Future setBatteryMode(String mode); 6 | Future>> streamBatteryEvents(); 7 | } 8 | -------------------------------------------------------------------------------- /shell/crates/types/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "types" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/battery/blocs/battery_event.dart: -------------------------------------------------------------------------------- 1 | abstract class BatteryEvent {} 2 | 3 | class BatteryInfoRequested extends BatteryEvent { 4 | BatteryInfoRequested(); 5 | } 6 | 7 | class BatteryStreamListen extends BatteryEvent {} 8 | 9 | class SetBatteryMode extends BatteryEvent { 10 | final String mode; 11 | SetBatteryMode(this.mode); 12 | } 13 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/home/data/songs_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:mechanix_music/models/song_info.dart'; 2 | 3 | abstract class SongsRepository { 4 | Future> getAllSongs(); 5 | Future> scanAllSongs(); 6 | Future deleteSong(SongInfo songInfo); 7 | Future toggleFavouriteSong(SongInfo songInfo, bool isFavourite); 8 | } 9 | -------------------------------------------------------------------------------- /dbus/freedesktop/bluez/examples/power_on.rs: -------------------------------------------------------------------------------- 1 | //! Basic example: PowerOn the Bluetooth device using freedesktop-bluez-client 2 | 3 | use bluez::service::BluetoothService; 4 | 5 | #[tokio::main] 6 | async fn main() -> anyhow::Result<()> { 7 | let bluetooth_service = BluetoothService::new().await?; 8 | bluetooth_service.toggle_bluetooth(true).await?; 9 | Ok(()) 10 | } 11 | -------------------------------------------------------------------------------- /apps/files/elinux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 6 | #define GENERATED_PLUGIN_REGISTRANT_ 7 | 8 | #include 9 | 10 | // Registers Flutter plugins. 11 | void RegisterPlugins(flutter::PluginRegistry* registry); 12 | 13 | #endif // GENERATED_PLUGIN_REGISTRANT_ 14 | -------------------------------------------------------------------------------- /apps/files/lib/src/commons/customWidgets/custom_loading_dialog.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | Widget buildLoadingDialog(String message) { 4 | return AlertDialog( 5 | content: Row( 6 | children: [ 7 | const CircularProgressIndicator(), 8 | const SizedBox(width: 20), 9 | Text(message), 10 | ], 11 | ), 12 | ); 13 | } 14 | -------------------------------------------------------------------------------- /apps/music/elinux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 6 | #define GENERATED_PLUGIN_REGISTRANT_ 7 | 8 | #include 9 | 10 | // Registers Flutter plugins. 11 | void RegisterPlugins(flutter::PluginRegistry* registry); 12 | 13 | #endif // GENERATED_PLUGIN_REGISTRANT_ 14 | -------------------------------------------------------------------------------- /apps/notes/elinux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 6 | #define GENERATED_PLUGIN_REGISTRANT_ 7 | 8 | #include 9 | 10 | // Registers Flutter plugins. 11 | void RegisterPlugins(flutter::PluginRegistry* registry); 12 | 13 | #endif // GENERATED_PLUGIN_REGISTRANT_ 14 | -------------------------------------------------------------------------------- /apps/settings/elinux/flutter/generated_plugin_registrant.h: -------------------------------------------------------------------------------- 1 | // 2 | // Generated file. Do not edit. 3 | // 4 | 5 | #ifndef GENERATED_PLUGIN_REGISTRANT_ 6 | #define GENERATED_PLUGIN_REGISTRANT_ 7 | 8 | #include 9 | 10 | // Registers Flutter plugins. 11 | void RegisterPlugins(flutter::PluginRegistry* registry); 12 | 13 | #endif // GENERATED_PLUGIN_REGISTRANT_ 14 | -------------------------------------------------------------------------------- /services/system/src/error.rs: -------------------------------------------------------------------------------- 1 | use thiserror::Error; 2 | 3 | #[derive(Error, Debug)] 4 | pub enum ServerError { 5 | #[error("Failed to build connection: {0}")] 6 | FailedBuildConnection(zbus::Error), 7 | #[error("Failed to register object: {0}")] 8 | FailedRegisterObject(zbus::Error), 9 | #[error("Failed to start dbus server: {0}")] 10 | FailedStartDBusServer(zbus::Error), 11 | } -------------------------------------------------------------------------------- /shell/crates/settings_drawer/src/services/brightness_sync.rs: -------------------------------------------------------------------------------- 1 | pub const MAX_DEVICE_BRIGHTNESS: u32 = 254; 2 | pub const DEFAULT_MIN_BRIGHTNESS: f32 = 10.; 3 | 4 | pub fn u8_to_percent(value: u8, max_u32: u32) -> f32 { 5 | value as f32 / max_u32 as f32 * 100.0 6 | } 7 | pub fn percent_to_u8(percent: f32, max_u32: u32) -> u8 { 8 | ((percent / 100.0) * max_u32 as f32).round() as u8 9 | } 10 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/power.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/camera/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "flutter-elinux: Attach", 6 | "request": "attach", 7 | "type": "dart", 8 | "deviceId": "flutter-tester", 9 | "cwd": "${workspaceFolder}", 10 | "vmServiceUri": "http://127.0.0.1:38547/azH6g4H0jjA=/" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /apps/files/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "flutter-elinux: Attach", 6 | "request": "attach", 7 | "type": "dart", 8 | "deviceId": "flutter-tester", 9 | "cwd": "${workspaceFolder}", 10 | "vmServiceUri": "http://127.0.0.1:42797/GxgvPKo-uW4=/" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /apps/settings/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "flutter-elinux: Attach", 6 | "request": "attach", 7 | "type": "dart", 8 | "deviceId": "flutter-tester", 9 | "cwd": "${workspaceFolder}", 10 | "vmServiceUri": "http://127.0.0.1:42861/IBen4e5vEK8=/" 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /shell/crates/settings_drawer/src/services/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod bluetooth_sync; 2 | pub mod brightness_sync; 3 | pub mod network_sync; 4 | pub mod sound_sync; 5 | 6 | pub use bluetooth_sync::sync_bluetooth_connected_status; 7 | pub use brightness_sync::{MAX_DEVICE_BRIGHTNESS, DEFAULT_MIN_BRIGHTNESS, percent_to_u8, u8_to_percent}; 8 | pub use network_sync::sync_connected_network; 9 | pub use sound_sync::update_device_info; 10 | -------------------------------------------------------------------------------- /services/search/sources/src/lib.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | 3 | pub mod service; 4 | pub mod utils; 5 | mod indexer; 6 | 7 | #[derive(Debug, Deserialize, Clone)] 8 | pub struct SourceSearchServiceConfig { 9 | pub enable_search: bool, 10 | pub index_dir: String, 11 | pub app_dir: String, 12 | pub search_limit: usize, 13 | pub target_memory_usage_in_bytes: usize, 14 | searchable_fields: Vec, 15 | } 16 | -------------------------------------------------------------------------------- /dbus/freedesktop/pulseaudio/examples/sinks.rs: -------------------------------------------------------------------------------- 1 | //! Example to get output devices using `get_sinks` method 2 | 3 | use pulseaudio::service::PulseAudioService; 4 | 5 | #[tokio::main] 6 | async fn main() -> anyhow::Result<()> { 7 | let service = PulseAudioService::new()?; 8 | let available_sinks = service.handle.get_sinks().await?; 9 | println!("{:#?}", available_sinks); 10 | service.handle.shutdown().await; 11 | 12 | Ok(()) 13 | } 14 | -------------------------------------------------------------------------------- /services/search/app_actions/src/lib.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | 3 | pub mod service; 4 | mod utils; 5 | 6 | pub use crate::service::AppActionsService; 7 | pub use crate::service::AppActions; 8 | #[derive(Debug, Deserialize, Clone)] 9 | pub struct AppActionsConfig { 10 | pub enable_search: bool, 11 | pub index_dir: String, 12 | pub schema_dir: String, 13 | pub search_limit: usize, 14 | searchable_fields: Vec, 15 | } 16 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/customWidgets/custom_mouse_cursor_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomCursorWidget extends StatelessWidget { 4 | final Widget child; 5 | const CustomCursorWidget({super.key, required this.child}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return MouseRegion( 10 | cursor: SystemMouseCursors.click, 11 | child: child, 12 | ); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/styles/text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const headerTextStyle = TextStyle( 4 | color: Colors.white, 5 | fontSize: 30, 6 | ); 7 | 8 | const subHeaderTextStyle = TextStyle( 9 | color: Color.fromARGB(255, 172, 171, 171), 10 | fontSize: 28, 11 | ); 12 | 13 | const labelTextStyle = TextStyle( 14 | fontSize: 24, 15 | ); 16 | 17 | const inputFieldTextStyle = TextStyle( 18 | fontSize: 20, 19 | ); 20 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/display/data/display_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:mechanix_settings/src/features/display/models/types.dart'; 2 | 3 | abstract class DisplayRepository { 4 | Future getDisplaySettings(); 5 | Future setBrightness(double brightness); 6 | Future setAutoBrightness(bool autoBrightness); 7 | Future setScreenTimeout(int timeout); 8 | Future setLockScreenTimeout(int timeout); 9 | } 10 | -------------------------------------------------------------------------------- /shell/crates/status_bar/src/events/mod.rs: -------------------------------------------------------------------------------- 1 | use upower::interfaces::device::BatteryState; 2 | 3 | #[derive(Debug)] 4 | pub enum AppEvents { 5 | WirelessStatusChanged { enabled: bool }, 6 | WirelessStrength { strength: u8 }, 7 | BluetoothEnabled { enabled: bool }, 8 | BluetoothConnectionStatus { connected: bool }, 9 | BatteryStateChanged { state: BatteryState }, 10 | BatteryPercentageChanged { value: u8 }, 11 | TimeUpdated, 12 | } 13 | -------------------------------------------------------------------------------- /apps/files/lib/src/commons/styles/text.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter/material.dart'; 3 | 4 | const headerTextStyle = TextStyle( 5 | color: Colors.white, 6 | fontSize: 30, 7 | ); 8 | 9 | const subHeaderTextStyle = TextStyle( 10 | color: Color.fromARGB(255, 172, 171, 171), 11 | fontSize: 28, 12 | ); 13 | 14 | const labelTextStyle = TextStyle( 15 | fontSize: 24, 16 | ); 17 | 18 | const inputFieldTextStyle = TextStyle( 19 | fontSize: 24, 20 | ); 21 | -------------------------------------------------------------------------------- /apps/notes/lib/src/commons/styles/text.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:flutter/material.dart'; 3 | 4 | const headerTextStyle = TextStyle( 5 | color: Colors.white, 6 | fontSize: 30, 7 | ); 8 | 9 | const subHeaderTextStyle = TextStyle( 10 | color: Color.fromARGB(255, 172, 171, 171), 11 | fontSize: 28, 12 | ); 13 | 14 | const labelTextStyle = TextStyle( 15 | fontSize: 24, 16 | ); 17 | 18 | const inputFieldTextStyle = TextStyle( 19 | fontSize: 24, 20 | ); 21 | -------------------------------------------------------------------------------- /shell/crates/settings_drawer/src/services/sound_sync.rs: -------------------------------------------------------------------------------- 1 | use crate::events::AppEvents; 2 | use futures::{SinkExt, channel::mpsc}; 3 | use pulseaudio::service::PulseAudioService; 4 | 5 | pub async fn update_device_info(tx: &mut mpsc::Sender, pulse_service: &PulseAudioService) { 6 | if let Ok(device_info) = pulse_service.handle.get_default_sink().await { 7 | let _ = tx.send(AppEvents::OutputSoundDevice { device_info }).await; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /dbus/freedesktop/pulseaudio/src/lib.rs: -------------------------------------------------------------------------------- 1 | //! PulseAudio integration library for managing audio devices and controls. 2 | //! 3 | //! This library provides a high-level interface for interacting with PulseAudio, 4 | //! allowing applications to manage audio devices, control volume levels, and 5 | //! handle audio-related operations asynchronously. 6 | 7 | use crate::errors::PulseAudioError; 8 | use async_trait::async_trait; 9 | 10 | pub mod errors; 11 | pub mod service; 12 | -------------------------------------------------------------------------------- /apps/music/lib/src/commons/colors.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | class MusicColors { 4 | static const scrollBarColor = Color(0xFFD2D2D2); 5 | static const titleColor = Color(0xFFDC8400); 6 | static const primaryTextColor = Color(0xFFD2D2D2); 7 | static const secondaryTextColor = Color(0xFFA4A4A4); 8 | static const deleteColor = Color(0xFFFF0000); 9 | static const backgroundColor = Color(0xFF222222); 10 | static const borderColor = Color(0xFFC67600); 11 | } 12 | -------------------------------------------------------------------------------- /services/search/apps/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "apps" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | tokio = { workspace = true } 8 | notify = { workspace = true } 9 | anyhow = { workspace = true } 10 | log = { workspace = true } 11 | futures = { workspace = true } 12 | serde = { workspace = true } 13 | zbus = { workspace = true } 14 | configparser = { version = "3.1.0" } 15 | dirs = { version = "6.0.0" } 16 | tantivy = { version = "0.25.0" } 17 | -------------------------------------------------------------------------------- /services/search/files/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "files" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | serde = { workspace = true } 8 | tokio = { workspace = true } 9 | log = { workspace = true } 10 | zbus = { workspace = true } 11 | anyhow = { workspace = true } 12 | futures = { workspace = true } 13 | thiserror = { workspace = true } 14 | notify = { version = "8.2.0" } 15 | dirs = { version = "6.0.0" } 16 | tantivy = { version = "0.25.0" } 17 | -------------------------------------------------------------------------------- /shell/crates/running_apps/src/main.rs: -------------------------------------------------------------------------------- 1 | use commons::prelude::*; 2 | use running_apps::run_app; 3 | use tracing_subscriber::EnvFilter; 4 | 5 | fn main() { 6 | tracing_subscriber::fmt() 7 | .with_env_filter(EnvFilter::from_default_env()) // reads RUST_LOG 8 | .init(); 9 | 10 | let application = gpui::Application::new().with_assets(Assets {}); 11 | application.run(|cx| { 12 | run_app(cx); 13 | cx.activate(true); 14 | }); 15 | } 16 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/toolbar/focus_preserve_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class FocusPreserveButton extends StatelessWidget { 4 | final Widget child; 5 | 6 | const FocusPreserveButton({super.key, required this.child}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Focus( 11 | canRequestFocus: false, 12 | descendantsAreFocusable: false, 13 | child: child, 14 | ); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /dbus/mechanix/extensions/src/errors.rs: -------------------------------------------------------------------------------- 1 | use thiserror::Error as ThisError; 2 | 3 | #[derive(Debug, ThisError)] 4 | pub enum Error { 5 | #[error("IO error: `{0}`")] 6 | Io(#[from] std::io::Error), 7 | #[error("D-Bus error: `{0}`")] 8 | DbusString(String), 9 | #[error("Receiver error: `{0}`")] 10 | Receiver(#[from] std::sync::mpsc::RecvError), 11 | } 12 | 13 | /// Type alias for the standard [`Result`] type. 14 | pub type Result = std::result::Result; -------------------------------------------------------------------------------- /dbus/mechanix/extensions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "extensions" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | evdevil = "0.3.3" 8 | zbus = { version = "5.10.0", features = ["tokio", "p2p"] } 9 | tokio = { version = "1.33", features = ["full"] } 10 | serde = "1.0.219" 11 | thiserror = "2.0.16" 12 | zvariant = "5.7.0" 13 | futures-util = "0.3.31" 14 | futures-lite = "2.6.1" 15 | toml = "0.9.5" 16 | anyhow = "1.0.99" 17 | evdev = "0.13.1" 18 | i2cdev = "0.6.1" 19 | -------------------------------------------------------------------------------- /services/search/app_actions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "app_actions" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | tokio = { workspace = true } 8 | notify = { workspace = true } 9 | anyhow = { workspace = true } 10 | log = { workspace = true } 11 | futures = { workspace = true } 12 | serde = { workspace = true } 13 | zbus = { workspace = true } 14 | toml = "0.9.5" 15 | crc32fast = "1.5.0" 16 | dirs = { version = "6.0.0" } 17 | tantivy = { version = "0.25.0" } 18 | -------------------------------------------------------------------------------- /shell/crates/settings/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "settings" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | serde = { workspace = true } 16 | commons = { path = "../commons" } 17 | toml = { workspace = true } 18 | dirs = { workspace = true } 19 | -------------------------------------------------------------------------------- /shell/crates/theme/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "theme" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | palette = { version = "0.7.6", features = ["serializing"] } 16 | dispatcher = { path = "../dispatcher" } 17 | futures = { workspace = true } 18 | -------------------------------------------------------------------------------- /shell/crates/dispatcher/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "dispatcher" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | crossbeam-channel = { workspace = true } 16 | mxconf_dbus = { path = "../../../dbus/mechanix/mxconf" } 17 | futures = { workspace = true } 18 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/home/presentation/empty_notes.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_notes/src/features/home/presentation/grid_empty_layout.dart'; 3 | 4 | class EmptyNotes extends StatelessWidget { 5 | const EmptyNotes({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return const NotesGridLayout( 10 | leftColumnHeights: [174, 92], 11 | rightColumnHeights: [88, 174], 12 | interactiveCardIndex: 0, 13 | ); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /shell/crates/running_apps/src/config/constants.rs: -------------------------------------------------------------------------------- 1 | // Layout constants 2 | pub const CARD_WIDTH: f32 = 250.0; 3 | pub const CARD_HEIGHT: f32 = 290.0; 4 | pub const CARD_GAP: f32 = 8.0; 5 | pub const CONTAINER_WIDTH: f32 = 540.0; 6 | pub const PADDING: f32 = 0.0; 7 | 8 | // Drag thresholds 9 | pub const DRAG_DETECTION_THRESHOLD: f32 = 5.0; 10 | pub const VERTICAL_DISMISS_THRESHOLD: f32 = -50.0; 11 | pub const HORIZONTAL_SWITCH_THRESHOLD: f32 = 0.2; // 20% of card width to switch 12 | pub const VERTICAL_TARGET_THRESHOLD: f32 = -500.0; -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/customWidgets/custom_icon.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomIcon extends StatelessWidget { 4 | final double width; 5 | final double height; 6 | final Widget icon; 7 | 8 | const CustomIcon( 9 | {super.key, this.width = 24, this.height = 24, required this.icon}); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return SizedBox( 14 | height: height, 15 | width: width, 16 | child: icon, 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /assets/icons/universal-search/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/about/models/types.dart: -------------------------------------------------------------------------------- 1 | class AboutDetailsType { 2 | final String hostname; 3 | final String hardwareModel; 4 | final String hardwareSerial; 5 | final String firmwareVersion; 6 | final String kernelRelease; 7 | final String operatingSystemName; 8 | 9 | AboutDetailsType({ 10 | required this.hostname, 11 | required this.hardwareModel, 12 | required this.hardwareSerial, 13 | required this.firmwareVersion, 14 | required this.kernelRelease, 15 | required this.operatingSystemName, 16 | }); 17 | } 18 | -------------------------------------------------------------------------------- /shell/crates/homescreen/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "homescreen" 3 | version.workspace = true 4 | authors.workspace = true 5 | edition.workspace = true 6 | license.workspace = true 7 | repository.workspace = true 8 | homepage.workspace = true 9 | categories.workspace = true 10 | keywords.workspace = true 11 | 12 | [dependencies] 13 | gpui = { workspace = true } 14 | rust-embed = { workspace = true } 15 | anyhow = { workspace = true } 16 | commons = { path = "../commons" } 17 | settings = { path = "../settings" } 18 | status_bar = { path = "../status_bar" } 19 | -------------------------------------------------------------------------------- /shared/hw-buttons/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mechanix-hw-buttons" 3 | description = "Hardware buttons controller for Mechanix services" 4 | version.workspace = true 5 | edition.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | tokio.workspace = true 15 | anyhow.workspace = true 16 | serde.workspace = true 17 | zbus.workspace = true 18 | evdev = { version = "0.12.2", features = ["tokio"] } -------------------------------------------------------------------------------- /shell/crates/settings/src/lib.rs: -------------------------------------------------------------------------------- 1 | use gpui::*; 2 | mod settings; 3 | use settings::{Settings, load_settings}; 4 | 5 | use crate::prelude::config_paths_for; 6 | 7 | impl Settings { 8 | pub fn new() -> Self { 9 | let settings = load_settings::(config_paths_for("settings.toml")); 10 | settings 11 | } 12 | } 13 | 14 | pub fn init(cx: &mut App) { 15 | let settings = Settings::new(); 16 | cx.set_global(settings); 17 | } 18 | 19 | impl Global for Settings {} 20 | 21 | pub mod prelude { 22 | pub use crate::settings::*; 23 | } 24 | -------------------------------------------------------------------------------- /dbus/mechanix/mxconf/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mxconf_dbus" 3 | description = "D-Bus interface used to access the configuration server" 4 | version.workspace = true 5 | edition.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | anyhow = "1.0.98" 15 | futures-util = "0.3.31" 16 | serde_json = "1.0.140" 17 | log = "0.4.27" 18 | tokio = { version = "1", features = ["full"] } 19 | zbus = "3.14.1" -------------------------------------------------------------------------------- /apps/settings/lib/src/features/about/data/about_repository_impl.dart: -------------------------------------------------------------------------------- 1 | import 'package:mechanix_settings/src/features/about/data/about_repository.dart'; 2 | import 'package:mechanix_settings/src/features/about/data/dbus_about_service.dart'; 3 | import 'package:mechanix_settings/src/features/about/models/types.dart'; 4 | 5 | class AboutRepositoryImpl extends AboutRepository { 6 | final DBusAboutService dBusAboutService = DBusAboutService(); 7 | 8 | @override 9 | Future getDeviceDetails() { 10 | return dBusAboutService.getDeviceDetails(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /dbus/freedesktop/bluez/examples/stream.rs: -------------------------------------------------------------------------------- 1 | use futures::StreamExt; 2 | use bluez::service::BluetoothService; 3 | 4 | #[tokio::main] 5 | async fn main() -> anyhow::Result<()> { 6 | let bluez_service = BluetoothService::new().await?; 7 | let mut receiver = bluez_service.stream_bluetooth_device_status().await; 8 | 9 | let handler = tokio::spawn(async move { 10 | while let Some(result) = receiver.next().await { 11 | println!("Bluetooth device status: {result:?}"); 12 | } 13 | }); 14 | 15 | handler.await.unwrap(); 16 | Ok(()) 17 | } 18 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/presentation/songs_icon.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SongsIcon extends StatelessWidget { 4 | final String iconPath; 5 | final Color color; 6 | final double height; 7 | final double width; 8 | 9 | const SongsIcon({ 10 | super.key, 11 | required this.iconPath, 12 | this.color = Colors.white, 13 | this.height = 32, 14 | this.width = 32, 15 | }); 16 | 17 | @override 18 | Widget build(BuildContext context) { 19 | return Image.asset(iconPath, width: 44, height: 44, color: color); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/battery/models/battery_info.dart: -------------------------------------------------------------------------------- 1 | import 'package:upower/upower.dart'; 2 | 3 | class BatteryInfo { 4 | double batteryPercentage; 5 | UPowerDeviceState status; 6 | String mode; 7 | int batteryRemainingTime; 8 | int batteryChargingTime; 9 | List availableBatteryModes; 10 | 11 | BatteryInfo({ 12 | required this.batteryPercentage, 13 | required this.status, 14 | required this.mode, 15 | required this.batteryChargingTime, 16 | required this.batteryRemainingTime, 17 | required this.availableBatteryModes, 18 | }); 19 | } 20 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/screen-recording-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/screen-recording-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/notes/lib/src/commons/color_icon.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ColorIcon extends StatelessWidget { 4 | final double height; 5 | final double width; 6 | final String color; 7 | const ColorIcon({ 8 | super.key, 9 | this.height = 21, 10 | this.width = 21, 11 | required this.color, 12 | }); 13 | 14 | @override 15 | Widget build(BuildContext context) { 16 | return SizedBox( 17 | height: height, 18 | width: width, 19 | child: Container(color: color != "none" ? Color(int.parse(color)) : null), 20 | ); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /shell/crates/app_drawer/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "app_drawer" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | rust-embed = { workspace = true } 16 | anyhow = { workspace = true } 17 | commons = { path = "../commons" } 18 | unicode-segmentation = "1.12.0" 19 | freedesktop-desktop-entry = "0.7.19" 20 | freedesktop-icons = "0.4.0" 21 | shlex = "1.3.0" 22 | -------------------------------------------------------------------------------- /shell/crates/shell_state/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "shell_state" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | networkmanager = { workspace = true } 16 | bluez = { workspace = true } 17 | upower = { workspace = true } 18 | chrono = { version = "0.4", features = ["clock"] } 19 | futures = { workspace = true } 20 | futures-timer = { workspace = true } 21 | -------------------------------------------------------------------------------- /dbus/freedesktop/pulseaudio/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "pulseaudio" 3 | description = "D-Bus interface used to access the sound" 4 | version.workspace = true 5 | edition.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | libpulse-binding = "2.28.2" 15 | anyhow = "1" 16 | tokio = { version = "1", features = ["full"] } 17 | thiserror = { version = "2.0.12" } 18 | async-trait = { version = "0.1.88" } 19 | log = { version = "0.4.27" } -------------------------------------------------------------------------------- /dbus/freedesktop/upower/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "upower" 3 | description = "D-Bus interface used to access the battery" 4 | version.workspace = true 5 | edition.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | anyhow = "1" 15 | zbus = { version = "5.7.1" } 16 | futures = { version = "0.3.30", features = ["thread-pool"] } 17 | thiserror = { version = "2.0.12" } 18 | async-trait = { version = "0.1.88" } 19 | log = { version = "0.4.27" } -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/customWidgets/custom_trailing_text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:widgets/mechanix.dart'; 3 | 4 | class CustomTrailingText extends StatelessWidget { 5 | const CustomTrailingText({super.key, required this.title, this.titleStyle}); 6 | 7 | final String title; 8 | final TextStyle? titleStyle; 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | final baseStyle = context.textTheme.labelLarge ?? const TextStyle(); 13 | 14 | return Text( 15 | title, 16 | style: baseStyle.merge(titleStyle), 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /dbus/mechanix/system/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "system_dbus" 3 | version.workspace = true 4 | authors.workspace = true 5 | edition.workspace = true 6 | license.workspace = true 7 | repository.workspace = true 8 | homepage.workspace = true 9 | categories.workspace = true 10 | keywords.workspace = true 11 | 12 | [dependencies] 13 | zbus = { workspace = true } 14 | anyhow = { workspace = true } 15 | log = { workspace = true } 16 | tokio = { workspace = true } 17 | serde = { workspace = true } 18 | mechanix-hw-buttons = { path = "../../../shared/hw-buttons" } 19 | futures = { version = "0.3.31", features = ["thread-pool"] } -------------------------------------------------------------------------------- /apps/camera/README.md: -------------------------------------------------------------------------------- 1 | # camera 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /shell/crates/universal_search/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "universal_search" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | rust-embed = { workspace = true } 16 | anyhow = { workspace = true } 17 | commons = { path = "../commons" } 18 | mxsearch = { path = "../../../services/search/server" } 19 | unicode-segmentation = "1.12.0" 20 | freedesktop-icons = "0.4.0" 21 | settings = { path = "../settings" } 22 | -------------------------------------------------------------------------------- /dbus/freedesktop/bluez/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "bluez" 3 | description = "D-Bus interface for accessing bluetooth" 4 | version.workspace = true 5 | edition.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | anyhow = "1" 15 | tokio = { version = "1", features = ["full"] } 16 | zbus = { version = "5.7.1" } 17 | thiserror = { version = "2.0.12" } 18 | async-trait = { version = "0.1.88" } 19 | log = { version = "0.4.27" } 20 | futures = { version = "0.3.30", features = ["thread-pool"] } -------------------------------------------------------------------------------- /apps/settings/lib/src/features/network/models/access_points.dart: -------------------------------------------------------------------------------- 1 | import 'package:nm/nm.dart'; 2 | 3 | class AccessPoints { 4 | bool isActive; 5 | bool isSaved; 6 | bool isSelected = false; // used for selecting the network 7 | bool isSecure = false; 8 | NetworkManagerAccessPoint nmAccessPoint; // used for connecting to the network 9 | NetworkManagerIP4Config? ip4Config; 10 | NetworkManagerIP6Config? ip6Config; 11 | 12 | AccessPoints( 13 | {required this.isActive, 14 | required this.isSaved, 15 | required this.isSecure, 16 | required this.nmAccessPoint, 17 | required this.ip4Config, 18 | required this.ip6Config}); 19 | } 20 | -------------------------------------------------------------------------------- /services/extensions/README.md: -------------------------------------------------------------------------------- 1 | # Mechanix Extension Service 2 | 3 | A D-Bus service for detecting and managing extensions in the Mechanix GUI system. 4 | 5 | ## Overview 6 | 7 | This service provides extension detection capabilities and exposes functionality through D-Bus interface for communication with other Mechanix components. 8 | 9 | ## Building 10 | 11 | ```bash 12 | cargo build --release 13 | ``` 14 | 15 | ## Running 16 | 17 | ```bash 18 | cargo run 19 | ``` 20 | 21 | ## Features 22 | 23 | - Extension detection and management 24 | - D-Bus interface for inter-process communication 25 | - Graceful shutdown handling 26 | - Comprehensive error handling and logging 27 | -------------------------------------------------------------------------------- /apps/notes/lib/src/commons/styles/styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_notes/src/commons/styles/colors.dart'; 3 | 4 | const borderSideStyle = BorderSide(color: Color(0xFF464646), width: 1); 5 | 6 | final titleStyle = const TextStyle( 7 | color: NotesColors.titleTextColor, 8 | fontSize: 18, 9 | overflow: TextOverflow.ellipsis, 10 | fontWeight: FontWeight.w500, 11 | fontFamily: "Overused Grotesk", 12 | ); 13 | 14 | final normalStyle = const TextStyle( 15 | fontSize: 18, 16 | color: NotesColors.labelColor, 17 | overflow: TextOverflow.ellipsis, 18 | fontWeight: FontWeight.w400, 19 | fontFamily: "Overused Grotesk", 20 | ); 21 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/brightness-high.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/leading_widget/bullet_list_builder.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_notes/src/commons/styles/colors.dart'; 3 | 4 | class BulletListBuilder extends StatelessWidget { 5 | const BulletListBuilder({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return Padding( 10 | padding: const EdgeInsets.only(right: 0, top: 15), 11 | child: Container( 12 | width: 4, 13 | height: 4, 14 | decoration: const BoxDecoration( 15 | color: NotesColors.editorTextColor, 16 | shape: BoxShape.circle, 17 | ), 18 | ), 19 | ); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /services/search/sources/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sources" 3 | description = "Searches across user-defined/external sources" 4 | version.workspace = true 5 | authors.workspace = true 6 | edition.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | tokio = { workspace = true } 15 | notify = { workspace = true } 16 | anyhow = { workspace = true } 17 | log = { workspace = true } 18 | futures = { workspace = true } 19 | serde = { workspace = true } 20 | zbus = { workspace = true } 21 | dirs = { version = "6.0.0" } 22 | tantivy = { version = "0.25.0" } 23 | -------------------------------------------------------------------------------- /assets/icons/app-drawer/search.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /services/search/files/src/lib.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use std::collections::HashSet; 3 | 4 | mod error; 5 | mod service; 6 | mod utils; 7 | 8 | pub use crate::service::FileSearchService; 9 | pub use service::SearchResult; 10 | #[derive(Debug, Deserialize, Clone)] 11 | pub struct FilesConfig { 12 | pub enable_search: bool, 13 | pub index_dir: String, 14 | pub files_dir_to_watch: String, 15 | pub max_depth: usize, 16 | pub max_watchers: usize, 17 | pub search_limit: usize, 18 | pub target_memory_usage_in_bytes: usize, 19 | pub read_file_content_upto_in_kb: usize, 20 | pub searchable_fields: Vec, 21 | pub content_index_extensions: HashSet, 22 | } 23 | -------------------------------------------------------------------------------- /shell/crates/settings_drawer/src/services/bluetooth_sync.rs: -------------------------------------------------------------------------------- 1 | use crate::events::AppEvents; 2 | use bluez::service::BluetoothService; 3 | use futures::{SinkExt, channel::mpsc}; 4 | 5 | pub async fn sync_bluetooth_connected_status( 6 | mut tx: mpsc::Sender, 7 | bluetooth_manager_service: &BluetoothService, 8 | ) { 9 | let count = match bluetooth_manager_service.get_connected_devices().await { 10 | Ok(r) => r.len(), 11 | Err(e) => { 12 | eprintln!("Failed to get connected devices: {}", e); 13 | return; 14 | } 15 | }; 16 | 17 | let _ = tx 18 | .send(AppEvents::BluetoothDevices { count: count as u8 }) 19 | .await; 20 | } 21 | -------------------------------------------------------------------------------- /dbus/mechanix/system/examples/client.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | #[tokio::main] 3 | async fn main() -> Result<()> { 4 | // Example: query a config key from the D-Bus service. 5 | // Call your get_setting function. 6 | match system_dbus::display_client::get_brightness().await { 7 | Ok(brightness) => { 8 | println!("Received brightness '{}':", brightness); 9 | } 10 | Err(e) => { 11 | eprintln!("Error getting setting: {:?}", e); 12 | } 13 | } 14 | 15 | Ok(()) 16 | } 17 | 18 | // Place here the get_setting function as you defined it (as in your code sample), 19 | // along with the ConfigServerProxy definition, or import them from your module. 20 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/bloc/editor_bloc_provider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_bloc/flutter_bloc.dart'; 2 | import 'package:mechanix_notes/src/features/editor/bloc/editor_bloc.dart'; 3 | import 'package:flutter/material.dart'; 4 | import 'package:mechanix_notes/src/features/home/data/notes_repository.dart'; 5 | 6 | class EditorBlocProvider extends StatelessWidget { 7 | final Widget child; 8 | 9 | const EditorBlocProvider({super.key, required this.child}); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return BlocProvider( 14 | create: 15 | (_) => EditorBloc(notesRepository: context.read()), 16 | child: child, 17 | ); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/cell-signal-high.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /shell/crates/settings_drawer/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "settings_drawer" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | networkmanager = { workspace = true } 15 | bluez = { workspace = true } 16 | upower = { workspace = true } 17 | pulseaudio = { workspace = true } 18 | system_dbus = { workspace = true } 19 | commons = { path = "../commons" } 20 | gpui = { workspace = true } 21 | rust-embed = { workspace = true } 22 | anyhow = { workspace = true } 23 | futures = "0.3.31" 24 | settings = { path = "../settings" } 25 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/cell-signal-none.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /shell/crates/commons/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "commons" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | rust-embed = { workspace = true } 16 | anyhow = { workspace = true } 17 | toml = { workspace = true } 18 | rand = "0.8" 19 | 20 | [[example]] 21 | name = "wing" 22 | path = "examples/wing.rs" 23 | 24 | [[example]] 25 | name = "animated_wing" 26 | path = "examples/animated_wing.rs" 27 | 28 | [[example]] 29 | name = "wing_with_children" 30 | path = "examples/wing_with_children.rs" 31 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/home/widgets/title_widget.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_music/src/commons/colors.dart'; 3 | 4 | class TitleWidget extends StatelessWidget { 5 | final String title; 6 | const TitleWidget({super.key, required this.title}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | padding: EdgeInsets.only(top: 0, bottom: 12), 12 | child: Text( 13 | title, 14 | style: TextStyle( 15 | color: MusicColors.titleColor, 16 | fontSize: 24, 17 | height: 1.25, 18 | letterSpacing: -1.1, 19 | fontWeight: FontWeight.w600, 20 | ), 21 | ), 22 | ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /shell/crates/launcher/src/lib.rs: -------------------------------------------------------------------------------- 1 | use commons::prelude::*; 2 | use gpui::*; 3 | 4 | pub fn run() { 5 | Application::new().with_assets(Assets {}).run(|cx| { 6 | //init global settings 7 | settings::init(cx); 8 | 9 | //init dispatcher 10 | dispatcher::init(cx); 11 | 12 | //init global theme 13 | theme::init(cx); 14 | 15 | //init shell state 16 | shell_state::init(cx); 17 | 18 | status_bar::run_app(cx); 19 | 20 | homescreen::run_app(cx); 21 | 22 | running_apps::run_app(cx); 23 | 24 | universal_search::run_app(cx); 25 | 26 | settings_drawer::run_app(cx); 27 | 28 | cx.activate(true); 29 | cx.refresh_windows(); 30 | }); 31 | } 32 | -------------------------------------------------------------------------------- /shell/crates/types/src/lib.rs: -------------------------------------------------------------------------------- 1 | use gpui::*; 2 | 3 | pub struct GlobalState { 4 | pub wireless_enabled: Entity, 5 | pub wireless_strength: Entity, 6 | pub bluetooth_enabled: Entity, 7 | pub battery_level: Entity, 8 | } 9 | 10 | impl Global for GlobalState {} 11 | 12 | pub fn load_global_state(cx: &mut App) { 13 | let wireless_enabled: Entity = cx.new(|_| false); 14 | let wireless_strength: Entity = cx.new(|_| 0); 15 | let bluetooth_enabled: Entity = cx.new(|_| false); 16 | let battery_level: Entity = cx.new(|_| 0); 17 | 18 | cx.set_global(GlobalState { 19 | wireless_enabled, 20 | wireless_strength, 21 | bluetooth_enabled, 22 | battery_level, 23 | }); 24 | } 25 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/home/data/notes_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:mechanix_notes/src/features/editor/models/editor_details_models.dart'; 2 | import 'package:mechanix_notes/src/features/home/models/notes_model.dart'; 3 | 4 | abstract class NotesRepository { 5 | Future> getAllNotes(); 6 | 7 | Future createNote( 8 | String title, 9 | String content, 10 | String plainText, 11 | ); 12 | Future updateNote( 13 | String title, 14 | String content, 15 | String id, 16 | String plainText, 17 | ); 18 | 19 | Future deleteNote(List deleteIds); 20 | 21 | Future> searchNotes(String searchQuery); 22 | 23 | Future findById(String noteId); 24 | } 25 | -------------------------------------------------------------------------------- /dbus/freedesktop/networkmanager/examples/wifi_events.rs: -------------------------------------------------------------------------------- 1 | //! Basic example: Listen stream to wireless network power event. 2 | 3 | use futures::StreamExt; 4 | use networkmanager::service::NetworkManagerService; 5 | 6 | #[tokio::main] 7 | async fn main() -> anyhow::Result<()> { 8 | let network_manager = NetworkManagerService::new().await?; 9 | let mut receiver = network_manager.stream_wireless_enabled_status().await; 10 | 11 | // Spawn the NetworkManager handler in a background task 12 | let handler = tokio::spawn(async move { 13 | while let Some(result) = receiver.next().await { 14 | println!("event: {:?}", result); 15 | } 16 | }); 17 | 18 | // Wait for the handler to complete 19 | handler.await?; 20 | 21 | Ok(()) 22 | } -------------------------------------------------------------------------------- /shell/crates/status_bar/src/services/bluetooth_sync.rs: -------------------------------------------------------------------------------- 1 | use crate::events::AppEvents; 2 | use bluez::service::BluetoothService; 3 | use futures::{SinkExt, channel::mpsc}; 4 | 5 | pub async fn sync_bluetooth_connected_status( 6 | mut tx: mpsc::Sender, 7 | bluetooth_manager_service: &BluetoothService, 8 | ) { 9 | let connected_devices_count = match bluetooth_manager_service.get_connected_devices().await { 10 | Ok(r) => r.len(), 11 | Err(e) => { 12 | eprintln!("Failed to get connected devices: {}", e); 13 | return; 14 | } 15 | }; 16 | let connected = connected_devices_count > 0; 17 | 18 | let _ = tx 19 | .send(AppEvents::BluetoothConnectionStatus { connected }) 20 | .await; 21 | } 22 | -------------------------------------------------------------------------------- /shell/crates/status_bar/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "status_bar" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | networkmanager = { workspace = true } 15 | bluez = { workspace = true } 16 | upower = { workspace = true } 17 | commons = { path = "../commons" } 18 | gpui = { workspace = true } 19 | rust-embed = { workspace = true } 20 | anyhow = { workspace = true } 21 | chrono = { version = "0.4", features = ["clock"] } 22 | futures = "0.3.31" 23 | settings = { path = "../settings" } 24 | shell_state = { path = "../shell_state" } 25 | theme = { path = "../theme" } 26 | -------------------------------------------------------------------------------- /dbus/freedesktop/networkmanager/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "networkmanager" 3 | description = "D-Bus interface used to access the NetworkManager daemon" 4 | version.workspace = true 5 | edition.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | anyhow = "1" 15 | tokio = { version = "1", features = ["full"] } 16 | zbus = { version = "5.7.1" } 17 | futures = { version = "0.3.30", features = ["thread-pool"] } 18 | thiserror = { version = "2.0.12" } 19 | async-trait = { version = "0.1.88" } 20 | log = { version = "0.4.27" } 21 | bitflags = "2.9.0" 22 | uuid = { version = "1.16.0", features = ["v4"] } 23 | mockall = { version = "0.13.1" } -------------------------------------------------------------------------------- /apps/notes/lib/src/features/home/presentation/app_title.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_notes/src/commons/styles/colors.dart'; 3 | 4 | class AppTitle extends StatelessWidget { 5 | const AppTitle({super.key}); 6 | 7 | @override 8 | Widget build(BuildContext context) { 9 | return const Padding( 10 | padding: EdgeInsets.fromLTRB(16, 8, 16, 0), 11 | child: Align( 12 | alignment: Alignment.centerLeft, 13 | child: Text( 14 | 'Notes', 15 | style: TextStyle( 16 | fontSize: 32, 17 | height: 1.3, 18 | letterSpacing: -1.1, 19 | fontWeight: FontWeight.w600, 20 | color: NotesColors.highlightTextColor, 21 | ), 22 | ), 23 | ), 24 | ); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/bluetooth-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/bluetooth-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /shell/crates/commons/src/assets.rs: -------------------------------------------------------------------------------- 1 | use anyhow::anyhow; 2 | use gpui::*; 3 | use rust_embed::RustEmbed; 4 | use std::borrow::Cow; 5 | 6 | #[derive(RustEmbed)] 7 | #[folder = "../../../assets"] 8 | #[include = "icons/**/*"] 9 | 10 | pub struct Assets; 11 | 12 | impl AssetSource for Assets { 13 | fn load(&self, path: &str) -> Result>> { 14 | if path.is_empty() { 15 | return Ok(None); 16 | } 17 | 18 | Self::get(path) 19 | .map(|f| Some(f.data)) 20 | .ok_or_else(|| anyhow!("could not find asset at path \"{path}\"")) 21 | } 22 | 23 | fn list(&self, path: &str) -> Result> { 24 | Ok(Self::iter() 25 | .filter_map(|p| p.starts_with(path).then(|| p.into())) 26 | .collect()) 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/toolbar/toolbar_container.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class ToolbarContainer extends StatelessWidget { 4 | final List child; 5 | 6 | final double? width; 7 | final double? height; 8 | const ToolbarContainer({ 9 | super.key, 10 | required this.child, 11 | this.width = 350, 12 | this.height = 105, 13 | }); 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return Container( 18 | decoration: BoxDecoration( 19 | borderRadius: BorderRadius.circular(16), 20 | color: const Color(0xFF2B2B2B), 21 | ), 22 | width: width, 23 | height: height, 24 | child: Column( 25 | mainAxisAlignment: MainAxisAlignment.start, 26 | children: child, 27 | ), 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /dbus/freedesktop/networkmanager/examples/enable_wifi.rs: -------------------------------------------------------------------------------- 1 | //! Basic example: Enable Wifi using freedesktop-network-manager-client 2 | 3 | use networkmanager::service::NetworkManagerService; 4 | 5 | #[tokio::main] 6 | async fn main() -> anyhow::Result<()> { 7 | // Create a channel for sending NetworkManager requests 8 | 9 | let network_manager = NetworkManagerService::new().await?; 10 | // Spawn the NetworkManager handler in a background task 11 | 12 | let receiver = match network_manager.toggle_wireless(true).await { 13 | Ok(()) => { 14 | println!("Wifi enabled"); 15 | network_manager.stream_device_events().await 16 | } 17 | Err(e) => { 18 | println!("Error enabling wifi: {}", e); 19 | return Ok(()); 20 | } 21 | }; 22 | 23 | Ok(()) 24 | } 25 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/network/models/saved_networks.dart: -------------------------------------------------------------------------------- 1 | import 'package:nm/nm.dart'; 2 | 3 | class SavedNetworks { 4 | String ssid; 5 | String icon; 6 | bool connected; 7 | NetworkManagerAccessPoint? accessPoint; 8 | SavedNetworks( 9 | {this.ssid = '', 10 | required this.icon, 11 | required this.connected, 12 | this.accessPoint}); 13 | } 14 | 15 | class SavedWirelessNetwork { 16 | final String? ssid; 17 | final String? security; 18 | final String? macAddress; 19 | final String? ipv4Method; 20 | final bool? autoConnect; 21 | // final String? type; // wireless or something else type 22 | 23 | SavedWirelessNetwork({ 24 | this.ssid, 25 | this.security, 26 | this.macAddress, 27 | this.ipv4Method, 28 | this.autoConnect, 29 | // this.type, 30 | }); 31 | } -------------------------------------------------------------------------------- /apps/music/lib/src/features/presentation/song_list_view.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_music/models/song_info.dart'; 3 | import 'package:mechanix_music/src/features/presentation/song_tile.dart'; 4 | 5 | class SongsListView extends StatelessWidget { 6 | final List songs; 7 | final Function(SongInfo song)? onSongTap; 8 | 9 | const SongsListView({super.key, required this.songs, this.onSongTap}); 10 | 11 | @override 12 | Widget build(BuildContext context) { 13 | return SliverPrototypeExtentList( 14 | prototypeItem: const SizedBox(height: 79), 15 | delegate: SliverChildBuilderDelegate(childCount: songs.length, ( 16 | context, 17 | index, 18 | ) { 19 | final song = songs[index]; 20 | 21 | return SongTile(song: song); 22 | }), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/leading_widget/number_list_builder.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_notes/src/commons/styles/colors.dart'; 3 | 4 | class NumberListBuilder extends StatelessWidget { 5 | final String number; 6 | const NumberListBuilder({super.key, required this.number}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | alignment: Alignment.topRight, 12 | padding: const EdgeInsets.only(top: 2, right: 14), 13 | child: Text( 14 | "$number.", 15 | style: const TextStyle( 16 | fontSize: 18, 17 | fontWeight: FontWeight.w400, 18 | color: NotesColors.titleTextColor, 19 | height: 1.45, // Word-like line spacing 20 | letterSpacing: 0.0, 21 | ), 22 | ), 23 | ); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/microphone-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/wireless-full.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/universal-search/arrow-up-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /dbus/freedesktop/networkmanager/examples/access_point_events.rs: -------------------------------------------------------------------------------- 1 | use futures::StreamExt; 2 | use networkmanager::service::NetworkManagerService; 3 | 4 | #[tokio::main] 5 | async fn main() -> anyhow::Result<()> { 6 | let network_manager = NetworkManagerService::new().await?; 7 | let mut receiver = network_manager.stream_access_point_events().await; 8 | 9 | let handler = tokio::spawn(async move { 10 | while let Some(result) = receiver.next().await { 11 | match result { 12 | Ok(new_access_point) => { 13 | println!("access_point event: {:?}", new_access_point); 14 | } 15 | Err(e) => { 16 | eprintln!("Error getting wifi state: {e}"); 17 | } 18 | } 19 | } 20 | }); 21 | 22 | handler.await.unwrap(); 23 | Ok(()) 24 | } 25 | -------------------------------------------------------------------------------- /apps/files/elinux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/elinux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/elinux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /apps/music/elinux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/elinux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/elinux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /apps/notes/elinux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/elinux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/elinux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /assets/icons/status-bar/wireless-high.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/files/lib/src/commons/customWidgets/label_value_row.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'custom_container.dart' show FixedHeightRow; 4 | 5 | class LabelValueListRow extends StatelessWidget { 6 | final String title; // details' key/label 7 | final String? value; 8 | 9 | const LabelValueListRow({ 10 | super.key, 11 | required this.title, 12 | this.value = '', 13 | }); 14 | 15 | @override 16 | @override 17 | Widget build(BuildContext context) { 18 | return FixedHeightRow( 19 | child: ListTile( 20 | title: Text(title, 21 | style: const TextStyle(color: Colors.white, fontSize: 24)), 22 | trailing: Text( 23 | value!, 24 | style: const TextStyle( 25 | color: Color.fromARGB(197, 255, 255, 255), fontSize: 20), 26 | ), 27 | ), 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apps/settings/elinux/flutter/generated_plugins.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # Generated file, do not edit. 3 | # 4 | 5 | list(APPEND FLUTTER_PLUGIN_LIST 6 | ) 7 | 8 | list(APPEND FLUTTER_FFI_PLUGIN_LIST 9 | ) 10 | 11 | set(PLUGIN_BUNDLED_LIBRARIES) 12 | 13 | foreach(plugin ${FLUTTER_PLUGIN_LIST}) 14 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/elinux plugins/${plugin}) 15 | target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) 16 | list(APPEND PLUGIN_BUNDLED_LIBRARIES $) 17 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) 18 | endforeach(plugin) 19 | 20 | foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) 21 | add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/elinux plugins/${ffi_plugin}) 22 | list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) 23 | endforeach(ffi_plugin) 24 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/left_transitions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SlideLeftTransitionsBuilder extends PageTransitionsBuilder { 4 | const SlideLeftTransitionsBuilder(); 5 | 6 | @override 7 | Widget buildTransitions( 8 | PageRoute route, 9 | BuildContext context, 10 | Animation animation, 11 | Animation secondaryAnimation, 12 | Widget child, 13 | ) { 14 | const curve = Curves.easeOut; 15 | 16 | // Animate both push (enter from right) and pop (exit to left) 17 | var tween = Tween( 18 | begin: const Offset(1.0, 0.0), // start off-screen right 19 | end: Offset.zero, // slide to normal position 20 | ).chain(CurveTween(curve: curve)); 21 | 22 | return SlideTransition( 23 | position: animation.drive(tween), 24 | child: child, 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/custom_slider.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class SlideLeftTransitionsBuilder extends PageTransitionsBuilder { 4 | const SlideLeftTransitionsBuilder(); 5 | 6 | @override 7 | Widget buildTransitions( 8 | PageRoute route, 9 | BuildContext context, 10 | Animation animation, 11 | Animation secondaryAnimation, 12 | Widget child, 13 | ) { 14 | const curve = Curves.easeOut; 15 | 16 | // Animate both push (enter from right) and pop (exit to left) 17 | var tween = Tween( 18 | begin: const Offset(1.0, 0.0), // start off-screen right 19 | end: Offset.zero, // slide to normal position 20 | ).chain(CurveTween(curve: curve)); 21 | 22 | return SlideTransition( 23 | position: animation.drive(tween), 24 | child: child, 25 | ); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/bloc/editor_event.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:mechanix_notes/src/features/editor/models/toolbar_models.dart'; 3 | 4 | abstract class EditorEvent extends Equatable { 5 | @override 6 | List get props => []; 7 | } 8 | 9 | class ToolbarToggle extends EditorEvent {} 10 | 11 | class UndoUpdate extends EditorEvent { 12 | final bool isUndo; 13 | 14 | UndoUpdate({required this.isUndo}); 15 | } 16 | 17 | class RedoUpdate extends EditorEvent { 18 | final bool isRedo; 19 | 20 | RedoUpdate({required this.isRedo}); 21 | } 22 | 23 | class SelectToolbar extends EditorEvent { 24 | final ToolbarEnum activeToolbar; 25 | 26 | SelectToolbar({required this.activeToolbar}); 27 | } 28 | 29 | class LoadNoteContent extends EditorEvent { 30 | final String noteId; 31 | LoadNoteContent({required this.noteId}); 32 | } 33 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/toolbar/toolbar_row.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_notes/src/commons/styles/styles.dart'; 3 | 4 | class ToolbarRow extends StatelessWidget { 5 | final BoxDecoration? boxDecoration; 6 | final List child; 7 | final bool isBorder; 8 | const ToolbarRow({ 9 | super.key, 10 | this.boxDecoration, 11 | required this.child, 12 | this.isBorder = true, 13 | }); 14 | 15 | @override 16 | Widget build(BuildContext context) { 17 | return Container( 18 | width: 350, 19 | height: 52.5, 20 | decoration: 21 | isBorder 22 | ? const BoxDecoration(border: Border(bottom: borderSideStyle)) 23 | : null, 24 | child: Row( 25 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 26 | children: child, 27 | ), 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /apps/camera/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .build/ 9 | .buildlog/ 10 | .history 11 | .svn/ 12 | .swiftpm/ 13 | migrate_working_dir/ 14 | 15 | # IntelliJ related 16 | *.iml 17 | *.ipr 18 | *.iws 19 | .idea/ 20 | 21 | # The .vscode folder contains launch configuration and tasks you configure in 22 | # VS Code which you may wish to be included in version control, so this line 23 | # is commented out by default. 24 | #.vscode/ 25 | 26 | # Flutter/Dart/Pub related 27 | **/doc/api/ 28 | **/ios/Flutter/.last_build_id 29 | .dart_tool/ 30 | .flutter-plugins 31 | .flutter-plugins-dependencies 32 | .pub-cache/ 33 | .pub/ 34 | /build/ 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Android Studio will place build artifacts here 43 | /android/app/debug 44 | /android/app/profile 45 | /android/app/release 46 | -------------------------------------------------------------------------------- /apps/files/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .build/ 9 | .buildlog/ 10 | .history 11 | .svn/ 12 | .swiftpm/ 13 | migrate_working_dir/ 14 | 15 | # IntelliJ related 16 | *.iml 17 | *.ipr 18 | *.iws 19 | .idea/ 20 | 21 | # The .vscode folder contains launch configuration and tasks you configure in 22 | # VS Code which you may wish to be included in version control, so this line 23 | # is commented out by default. 24 | #.vscode/ 25 | 26 | # Flutter/Dart/Pub related 27 | **/doc/api/ 28 | **/ios/Flutter/.last_build_id 29 | .dart_tool/ 30 | .flutter-plugins 31 | .flutter-plugins-dependencies 32 | .pub-cache/ 33 | .pub/ 34 | /build/ 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Android Studio will place build artifacts here 43 | /android/app/debug 44 | /android/app/profile 45 | /android/app/release 46 | -------------------------------------------------------------------------------- /apps/notes/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .build/ 9 | .buildlog/ 10 | .history 11 | .svn/ 12 | .swiftpm/ 13 | migrate_working_dir/ 14 | 15 | # IntelliJ related 16 | *.iml 17 | *.ipr 18 | *.iws 19 | .idea/ 20 | 21 | # The .vscode folder contains launch configuration and tasks you configure in 22 | # VS Code which you may wish to be included in version control, so this line 23 | # is commented out by default. 24 | #.vscode/ 25 | 26 | # Flutter/Dart/Pub related 27 | **/doc/api/ 28 | **/ios/Flutter/.last_build_id 29 | .dart_tool/ 30 | .flutter-plugins 31 | .flutter-plugins-dependencies 32 | .pub-cache/ 33 | .pub/ 34 | /build/ 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Android Studio will place build artifacts here 43 | /android/app/debug 44 | /android/app/profile 45 | /android/app/release 46 | -------------------------------------------------------------------------------- /apps/settings/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .build/ 9 | .buildlog/ 10 | .history 11 | .svn/ 12 | .swiftpm/ 13 | migrate_working_dir/ 14 | 15 | # IntelliJ related 16 | *.iml 17 | *.ipr 18 | *.iws 19 | .idea/ 20 | 21 | # The .vscode folder contains launch configuration and tasks you configure in 22 | # VS Code which you may wish to be included in version control, so this line 23 | # is commented out by default. 24 | #.vscode/ 25 | 26 | # Flutter/Dart/Pub related 27 | **/doc/api/ 28 | **/ios/Flutter/.last_build_id 29 | .dart_tool/ 30 | .flutter-plugins 31 | .flutter-plugins-dependencies 32 | .pub-cache/ 33 | .pub/ 34 | /build/ 35 | 36 | # Symbolication related 37 | app.*.symbols 38 | 39 | # Obfuscation related 40 | app.*.map.json 41 | 42 | # Android Studio will place build artifacts here 43 | /android/app/debug 44 | /android/app/profile 45 | /android/app/release 46 | -------------------------------------------------------------------------------- /apps/music/lib/src/features/presentation/artwork_icon.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_music/src/commons/icons.dart'; 3 | 4 | class ArtworkIcon extends StatelessWidget { 5 | final String? artworkPath; 6 | final double? size; 7 | const ArtworkIcon({super.key, this.artworkPath, this.size = 44}); 8 | @override 9 | Widget build(BuildContext context) { 10 | if (artworkPath != null) { 11 | return ClipRRect( 12 | borderRadius: BorderRadius.circular(50), 13 | child: Image.asset(artworkPath!, width: size, height: size), 14 | ); 15 | } else { 16 | return Container( 17 | width: size, 18 | height: size, 19 | decoration: BoxDecoration( 20 | color: Colors.grey.shade200, 21 | borderRadius: BorderRadius.circular(50), 22 | ), 23 | child: Image.asset(MusicIcons.audioImage), 24 | ); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /dbus/freedesktop/bluez/src/errors.rs: -------------------------------------------------------------------------------- 1 | //! Bluez errors 2 | 3 | use super::proxies::ProxyError; 4 | 5 | /// An error that can occur while handling bluetooth operations. 6 | #[derive(Clone, Debug, thiserror::Error)] 7 | #[non_exhaustive] 8 | pub enum BluezError { 9 | /// A generic, unspecified error. 10 | #[error("generic error")] 11 | Generic, 12 | 13 | /// An error originating from the proxy layer. 14 | #[error("proxy error: {0}")] 15 | ProxyError(#[from] ProxyError), 16 | 17 | /// Failure to create the system D-Bus connection. 18 | #[error("failed to initialize system bus: {0}")] 19 | InitBusError(String), 20 | 21 | /// Failure to create the BlueZ proxy. 22 | #[error("failed to create bluez proxy: {0}")] 23 | CreateBluezProxyError(String), 24 | 25 | /// Failure to create the adapter proxy. 26 | #[error("failed to create adapter proxy: {0}")] 27 | CreateAdapterProxyError(String), 28 | } 29 | -------------------------------------------------------------------------------- /apps/camera/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "17025dd88227cd9532c33fa78f5250d548d87e9a" 8 | channel: "[user-branch]" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 17 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 18 | 19 | # User provided section 20 | 21 | # List of Local paths (relative to this file) that should be 22 | # ignored by the migrate tool. 23 | # 24 | # Files that are not part of the templates will be ignored by default. 25 | unmanaged_files: 26 | - 'lib/main.dart' 27 | - 'ios/Runner.xcodeproj/project.pbxproj' 28 | -------------------------------------------------------------------------------- /apps/files/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "17025dd88227cd9532c33fa78f5250d548d87e9a" 8 | channel: "[user-branch]" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 17 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 18 | 19 | # User provided section 20 | 21 | # List of Local paths (relative to this file) that should be 22 | # ignored by the migrate tool. 23 | # 24 | # Files that are not part of the templates will be ignored by default. 25 | unmanaged_files: 26 | - 'lib/main.dart' 27 | - 'ios/Runner.xcodeproj/project.pbxproj' 28 | -------------------------------------------------------------------------------- /apps/notes/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "17025dd88227cd9532c33fa78f5250d548d87e9a" 8 | channel: "[user-branch]" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 17 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 18 | 19 | # User provided section 20 | 21 | # List of Local paths (relative to this file) that should be 22 | # ignored by the migrate tool. 23 | # 24 | # Files that are not part of the templates will be ignored by default. 25 | unmanaged_files: 26 | - 'lib/main.dart' 27 | - 'ios/Runner.xcodeproj/project.pbxproj' 28 | -------------------------------------------------------------------------------- /apps/settings/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: "17025dd88227cd9532c33fa78f5250d548d87e9a" 8 | channel: "[user-branch]" 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 17 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a 18 | 19 | # User provided section 20 | 21 | # List of Local paths (relative to this file) that should be 22 | # ignored by the migrate tool. 23 | # 24 | # Files that are not part of the templates will be ignored by default. 25 | unmanaged_files: 26 | - 'lib/main.dart' 27 | - 'ios/Runner.xcodeproj/project.pbxproj' 28 | -------------------------------------------------------------------------------- /dbus/mechanix/system/src/hw_button_client.rs: -------------------------------------------------------------------------------- 1 | use mechanix_hw_buttons::KeyEvent; 2 | use serde::{Deserialize, Serialize}; 3 | use zbus::{proxy, zvariant::Type, Connection, Result}; 4 | 5 | #[derive(Deserialize, Serialize, Type, PartialEq, Debug)] 6 | pub struct NotificationEvent {} 7 | 8 | #[proxy( 9 | interface = "org.mechanix.services.HwButton", 10 | default_service = "org.mechanix.services.HwButton" 11 | )] 12 | trait HwButtonInterface { 13 | #[zbus(signal)] 14 | async fn notification(&self, event: KeyEvent) -> Result<(), zbus::Error>; 15 | } 16 | 17 | pub struct HwButton; 18 | 19 | impl HwButton { 20 | pub async fn get_notification_stream(path: String) -> Result> { 21 | let connection = Connection::system().await?; 22 | let proxy = HwButtonInterfaceProxy::new(&connection, path).await?; 23 | let stream = proxy.receive_notification().await?; 24 | Ok(stream) 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /apps/notes/lib/src/features/editor/models/toolbar_models.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_quill/flutter_quill.dart'; 2 | import 'package:mechanix_notes/src/commons/icons.dart'; 3 | 4 | enum ToolbarEnum { text, align, none } 5 | 6 | class ToolbarItem { 7 | final Attribute attribute; 8 | final String key; 9 | final String iconPath; 10 | 11 | const ToolbarItem({ 12 | required this.attribute, 13 | required this.key, 14 | required this.iconPath, 15 | }); 16 | } 17 | 18 | List kTextEditingToolbarItems = [ 19 | ToolbarItem( 20 | attribute: Attribute.bold, 21 | key: Attribute.bold.key, 22 | iconPath: NotesIcon.boldIcon, 23 | ), 24 | ToolbarItem( 25 | attribute: Attribute.italic, 26 | key: Attribute.italic.key, 27 | iconPath: NotesIcon.italicIcon, 28 | ), 29 | ToolbarItem( 30 | attribute: Attribute.underline, 31 | key: Attribute.underline.key, 32 | iconPath: NotesIcon.textUnderlineIcon, 33 | ), 34 | ]; 35 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/customWidgets/label_value_row.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_settings/src/commons/customWidgets/custom_container.dart'; 3 | 4 | class LabelValueListRow extends StatelessWidget { 5 | final String title; // details' key/label 6 | final String? value; 7 | 8 | const LabelValueListRow({ 9 | super.key, 10 | required this.title, 11 | this.value = '', 12 | }); 13 | 14 | @override 15 | @override 16 | Widget build(BuildContext context) { 17 | return FixedHeightRow( 18 | child: ListTile( 19 | title: Text(title, 20 | style: const TextStyle( 21 | color: Colors.white, 22 | fontSize: 24, 23 | )), 24 | trailing: Text( 25 | value!, 26 | style: const TextStyle( 27 | color: Color.fromARGB(197, 255, 255, 255), fontSize: 20), 28 | ), 29 | ), 30 | ); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /apps/files/elinux/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(runner LANGUAGES CXX) 3 | 4 | if(FLUTTER_TARGET_BACKEND_TYPE MATCHES "gbm") 5 | add_definitions(-DFLUTTER_TARGET_BACKEND_GBM) 6 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "eglstream") 7 | add_definitions(-DFLUTTER_TARGET_BACKEND_EGLSTREAM) 8 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "x11") 9 | add_definitions(-DFLUTTER_TARGET_BACKEND_X11) 10 | else() 11 | add_definitions(-DFLUTTER_TARGET_BACKEND_WAYLAND) 12 | endif() 13 | 14 | add_executable(${BINARY_NAME} 15 | "flutter_window.cc" 16 | "main.cc" 17 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 18 | ) 19 | apply_standard_settings(${BINARY_NAME}) 20 | target_link_libraries(${BINARY_NAME} PRIVATE flutter) 21 | target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) 22 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 23 | add_dependencies(${BINARY_NAME} flutter_assemble) 24 | -------------------------------------------------------------------------------- /apps/music/elinux/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(runner LANGUAGES CXX) 3 | 4 | if(FLUTTER_TARGET_BACKEND_TYPE MATCHES "gbm") 5 | add_definitions(-DFLUTTER_TARGET_BACKEND_GBM) 6 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "eglstream") 7 | add_definitions(-DFLUTTER_TARGET_BACKEND_EGLSTREAM) 8 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "x11") 9 | add_definitions(-DFLUTTER_TARGET_BACKEND_X11) 10 | else() 11 | add_definitions(-DFLUTTER_TARGET_BACKEND_WAYLAND) 12 | endif() 13 | 14 | add_executable(${BINARY_NAME} 15 | "flutter_window.cc" 16 | "main.cc" 17 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 18 | ) 19 | apply_standard_settings(${BINARY_NAME}) 20 | target_link_libraries(${BINARY_NAME} PRIVATE flutter) 21 | target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) 22 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 23 | add_dependencies(${BINARY_NAME} flutter_assemble) 24 | -------------------------------------------------------------------------------- /apps/notes/elinux/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(runner LANGUAGES CXX) 3 | 4 | if(FLUTTER_TARGET_BACKEND_TYPE MATCHES "gbm") 5 | add_definitions(-DFLUTTER_TARGET_BACKEND_GBM) 6 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "eglstream") 7 | add_definitions(-DFLUTTER_TARGET_BACKEND_EGLSTREAM) 8 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "x11") 9 | add_definitions(-DFLUTTER_TARGET_BACKEND_X11) 10 | else() 11 | add_definitions(-DFLUTTER_TARGET_BACKEND_WAYLAND) 12 | endif() 13 | 14 | add_executable(${BINARY_NAME} 15 | "flutter_window.cc" 16 | "main.cc" 17 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 18 | ) 19 | apply_standard_settings(${BINARY_NAME}) 20 | target_link_libraries(${BINARY_NAME} PRIVATE flutter) 21 | target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) 22 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 23 | add_dependencies(${BINARY_NAME} flutter_assemble) 24 | -------------------------------------------------------------------------------- /apps/settings/elinux/runner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.15) 2 | project(runner LANGUAGES CXX) 3 | 4 | if(FLUTTER_TARGET_BACKEND_TYPE MATCHES "gbm") 5 | add_definitions(-DFLUTTER_TARGET_BACKEND_GBM) 6 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "eglstream") 7 | add_definitions(-DFLUTTER_TARGET_BACKEND_EGLSTREAM) 8 | elseif(FLUTTER_TARGET_BACKEND_TYPE MATCHES "x11") 9 | add_definitions(-DFLUTTER_TARGET_BACKEND_X11) 10 | else() 11 | add_definitions(-DFLUTTER_TARGET_BACKEND_WAYLAND) 12 | endif() 13 | 14 | add_executable(${BINARY_NAME} 15 | "flutter_window.cc" 16 | "main.cc" 17 | "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" 18 | ) 19 | apply_standard_settings(${BINARY_NAME}) 20 | target_link_libraries(${BINARY_NAME} PRIVATE flutter) 21 | target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) 22 | target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") 23 | add_dependencies(${BINARY_NAME} flutter_assemble) 24 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/brightness-medium.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /dbus/mechanix/extensions/examples/reciever.rs: -------------------------------------------------------------------------------- 1 | use extensions::proxy::reciever::ExtensionServiceReceiver; 2 | use extensions::events::ExtensionServiceEvent; 3 | 4 | #[tokio::main] 5 | async fn main() -> Result<(), Box> { 6 | // Create receiver and get event channel 7 | let (receiver, mut event_receiver) = ExtensionServiceReceiver::new().await?; 8 | 9 | // Start receiver in background 10 | tokio::spawn(async move { 11 | receiver.start_service().await.ok(); 12 | }); 13 | 14 | // Listen for signals 15 | while let Some(event) = event_receiver.recv().await { 16 | match event { 17 | ExtensionServiceEvent::Added(device) => { 18 | println!("Device added: {}", device.name()); 19 | } 20 | ExtensionServiceEvent::Removed(device) => { 21 | println!("Device removed: {}", device.name()); 22 | } 23 | } 24 | } 25 | 26 | Ok(()) 27 | } 28 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/bluetooth/data/bluetooth_repository.dart: -------------------------------------------------------------------------------- 1 | import 'package:bluez/bluez.dart'; 2 | 3 | abstract class BluetoothRepository { 4 | Future init(); // connect BlueZ client 5 | Stream get bluezAdapterPowerStream; 6 | Stream get bluezAdapterDiscoverableStream; 7 | 8 | Future isBluetoothEnabled(); 9 | Future setPower(bool enable); 10 | 11 | Future getBluezAdapter(); 12 | Future setAdapterAlias(String alias); 13 | 14 | Future startDiscovery(); 15 | Future stopDiscovery(); 16 | Future> getDevices(); 17 | Future pair(String address); 18 | Future connect(String address); 19 | Future disconnect(String address); 20 | Future remove(String address); 21 | 22 | Future> onDeviceAdded(); 23 | Future> onDeviceRemoved(); 24 | Future setDiscoverable(bool value); 25 | 26 | Future close(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/wireless-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/wireless-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/notes/lib/models/note_hive.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:hive/hive.dart'; 3 | 4 | part 'note_hive.g.dart'; 5 | 6 | @HiveType(typeId: 0) 7 | class NoteHive extends HiveObject { 8 | @HiveField(0) 9 | String id; 10 | 11 | @HiveField(1) 12 | String title; 13 | 14 | @HiveField(2) 15 | String content; 16 | 17 | @HiveField(3) 18 | DateTime createdAt; 19 | 20 | @HiveField(4) 21 | DateTime updatedAt; 22 | 23 | @HiveField(5) 24 | String plainText; 25 | 26 | @HiveField(6) 27 | bool isPinned; 28 | 29 | @HiveField(7) 30 | String tag; 31 | 32 | @HiveField(8) 33 | String preview; 34 | 35 | @HiveField(9) 36 | double height; 37 | 38 | NoteHive({ 39 | required this.id, 40 | required this.title, 41 | required this.content, 42 | required this.createdAt, 43 | required this.updatedAt, 44 | required this.plainText, 45 | this.isPinned = false, 46 | this.tag = 'none', 47 | required this.preview, 48 | required this.height, 49 | }); 50 | } 51 | -------------------------------------------------------------------------------- /assets/icons/status-bar/wireless-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/brightness-low.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /shell/crates/running_apps/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "running_apps" 4 | edition = "2024" 5 | version.workspace = true 6 | authors.workspace = true 7 | license.workspace = true 8 | repository.workspace = true 9 | homepage.workspace = true 10 | categories.workspace = true 11 | keywords.workspace = true 12 | 13 | [dependencies] 14 | gpui = { workspace = true } 15 | rust-embed = { workspace = true } 16 | anyhow = { workspace = true } 17 | serde = { workspace = true } 18 | commons = { path = "../commons" } 19 | tokio = { workspace = true } 20 | futures = { workspace = true } 21 | notify = { workspace = true } 22 | tracing = { workspace = true } 23 | tracing-subscriber = { workspace = true } 24 | wayland-protocols-async = { git = "https://github.com/mecha-org/wayland-protocols-async.git", rev = "0c2c8f6ab9d944e24fdff89f08fd8fe6a67eb6d3" } 25 | indexmap = "2.1.0" 26 | lazy_static = "1.5.0" 27 | xdg = "2.4.1" 28 | settings = { path = "../settings" } 29 | theme = { path = "../theme" } 30 | dispatcher = { path = "../dispatcher" } 31 | -------------------------------------------------------------------------------- /services/desktop/src/main.rs: -------------------------------------------------------------------------------- 1 | mod handlers; 2 | 3 | use crate::handlers::display::DisplayInterface; 4 | use crate::handlers::hw_buttons::HwButtonHandler; 5 | use anyhow::Result; 6 | use log::{error, info}; 7 | 8 | #[tokio::main] 9 | async fn main() -> Result<()> { 10 | env_logger::init(); 11 | let mut handles: Vec> = Vec::new(); 12 | let display = DisplayInterface::new(); 13 | let display_handler = tokio::spawn(async move { 14 | display.watch_brightness().await; 15 | }); 16 | handles.push(display_handler); 17 | let hw_button = HwButtonHandler::new(); 18 | let hw_button_handler = tokio::spawn(async move { 19 | hw_button.run().await; 20 | }); 21 | handles.push(hw_button_handler); 22 | // Wait for SIGINT (Ctrl+C) 23 | match tokio::signal::ctrl_c().await { 24 | Ok(()) => { 25 | info!("Received SIGINT, shutting down"); 26 | } 27 | Err(e) => error!("Failed to receive SIGINT: {}", e), 28 | } 29 | Ok(()) 30 | } 31 | -------------------------------------------------------------------------------- /services/extensions/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mechanix-extension-service" 3 | version.workspace = true 4 | authors.workspace = true 5 | edition.workspace = true 6 | license.workspace = true 7 | repository.workspace = true 8 | homepage.workspace = true 9 | categories.workspace = true 10 | keywords.workspace = true 11 | 12 | [dependencies] 13 | tokio = {workspace = true} 14 | extensions = {path = "../../dbus/mechanix/extensions"} 15 | anyhow = { workspace = true } 16 | log = { workspace = true } 17 | env_logger = {workspace = true} 18 | 19 | [package.metadata.deb] 20 | maintainer = "Sandeep Patel " 21 | extended-description = """\ 22 | Detection Service for the Mechanix Extensions""" 23 | depends = "$auto" 24 | section = "utility" 25 | priority = "optional" 26 | assets = [ 27 | # target/release path is special, and gets replaced by cargo-deb with the actual target dir path. 28 | [ 29 | "../../target/release/mechanix-extension-service", 30 | "usr/bin/", 31 | "755", 32 | ], 33 | ] -------------------------------------------------------------------------------- /apps/files/lib/src/commons/customWidgets/custom_text_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomTextButton extends StatelessWidget { 4 | final String label; 5 | final VoidCallback onPressed; 6 | final Color textColor; 7 | final double fontSize; 8 | final EdgeInsetsGeometry padding; 9 | 10 | const CustomTextButton({ 11 | super.key, 12 | required this.label, 13 | required this.onPressed, 14 | this.textColor = Colors.white, 15 | this.fontSize = 20, 16 | this.padding = const EdgeInsets.symmetric(vertical: 6.0, horizontal: 4.0), 17 | }); 18 | 19 | @override 20 | Widget build(BuildContext context) { 21 | return TextButton( 22 | onPressed: onPressed, 23 | child: Container( 24 | padding: padding, 25 | child: Text( 26 | label, 27 | textAlign: TextAlign.center, 28 | style: TextStyle( 29 | fontSize: fontSize, 30 | color: textColor, 31 | ), 32 | ), 33 | ), 34 | ); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/customWidgets/custom_text_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomTextButton extends StatelessWidget { 4 | final String label; 5 | final VoidCallback onPressed; 6 | final Color textColor; 7 | final double fontSize; 8 | final EdgeInsetsGeometry padding; 9 | 10 | const CustomTextButton({ 11 | super.key, 12 | required this.label, 13 | required this.onPressed, 14 | this.textColor = Colors.white, 15 | this.fontSize = 20, 16 | this.padding = const EdgeInsets.symmetric(vertical: 6.0, horizontal: 4.0), 17 | }); 18 | 19 | @override 20 | Widget build(BuildContext context) { 21 | return TextButton( 22 | onPressed: onPressed, 23 | child: Container( 24 | padding: padding, 25 | child: Text( 26 | label, 27 | textAlign: TextAlign.center, 28 | style: TextStyle( 29 | fontSize: fontSize, 30 | color: textColor, 31 | ), 32 | ), 33 | ), 34 | ); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/about/bloc/about_bloc.dart: -------------------------------------------------------------------------------- 1 | import 'package:equatable/equatable.dart'; 2 | import 'package:flutter_bloc/flutter_bloc.dart'; 3 | import 'package:mechanix_settings/src/features/about/data/about_repository.dart'; 4 | 5 | part 'about_event.dart'; 6 | part 'about_state.dart'; 7 | 8 | class AboutBloc extends Bloc { 9 | final AboutRepository aboutRepository; 10 | 11 | AboutBloc({required this.aboutRepository}) : super(AboutState()) { 12 | on(_onInitializeABout); 13 | } 14 | 15 | Future _onInitializeABout( 16 | InitializeAbout event, Emitter emit) async { 17 | final about = await aboutRepository.getDeviceDetails(); 18 | emit(state.copyWith( 19 | hostname: about.hostname, 20 | hardwareModel: about.hardwareModel, 21 | hardwareSerial: about.hardwareSerial, 22 | firmwareVersion: about.firmwareVersion, 23 | kernelRelease: about.kernelRelease, 24 | operatingSystemName: about.operatingSystemName, 25 | )); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/network/presentation/ipsettings/ip_static_details.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_settings/src/commons/customWidgets/custom_label_value.dart'; 3 | import 'package:mechanix_settings/src/commons/styles/custom_styles.dart'; 4 | import 'package:mechanix_settings/src/features/network/models/types.dart'; 5 | 6 | class IpStaticDetails extends StatelessWidget { 7 | final IpModes? selectedMode; 8 | const IpStaticDetails({super.key, this.selectedMode}); 9 | 10 | @override 11 | Widget build(BuildContext context) { 12 | return const Column( 13 | crossAxisAlignment: CrossAxisAlignment.start, 14 | children: [ 15 | Text( 16 | "Static", 17 | style: secondaryHeaderStyle, 18 | ), 19 | CustomLabelValue( 20 | title: "IP Settings", 21 | value: "192.160.12.1", 22 | ), 23 | CustomLabelValue( 24 | title: "Gateway", 25 | value: "asds", 26 | ) 27 | ], 28 | ); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /services/conf/examples/client.rs: -------------------------------------------------------------------------------- 1 | use mxconf::cli::watch_setting; 2 | 3 | #[tokio::main] 4 | async fn main() -> Result<(), anyhow::Error> { 5 | // Example: Watch for changes to a key 6 | println!("Example 1: Watch for changes to a key"); 7 | println!("Press Ctrl+C to stop watching"); 8 | watch_setting("org.mechanix.keyboard", &Some("general.enabled".to_string())).await?; 9 | 10 | // Note: The following examples won't run because the watch_setting function 11 | // blocks indefinitely. In a real application, you would use these functions 12 | // based on user input or in separate tasks. 13 | 14 | // Example: Get a setting 15 | // let value = get_setting("org.mechanix.keyboard.general.enabled").await?; 16 | // println!("Value: {}", value); 17 | 18 | // Example: Set a setting 19 | // let result = set_setting("org.mechanix.keyboard.general.enabled", "true").await?; 20 | // println!("Result: {}", result); 21 | 22 | // Example: List all schemas 23 | // list_schemas().await?; 24 | 25 | Ok(()) 26 | } 27 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/sound/presentation/Widgets/notification_sound.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_settings/app_route.dart'; 3 | import 'package:mechanix_settings/src/commons/constants.dart'; 4 | import 'package:mechanix_settings/src/commons/customWidgets/custom_app_bar.dart'; 5 | 6 | class NotificationSound extends StatelessWidget { 7 | const NotificationSound({super.key}); 8 | 9 | void _backNavigation(BuildContext context) { 10 | Navigator.pushNamed(context, AppRoutes.notificationSound); 11 | } 12 | 13 | @override 14 | Widget build(BuildContext context) { 15 | return Scaffold( 16 | appBar: CustomAppBar( 17 | title: "Bluetooth", 18 | leftIcon: Image.asset(Images.back), 19 | leftIconOnTap: () => _backNavigation(context), 20 | ), 21 | // body: ContainerWidget( 22 | // child: MechanixSelect( 23 | // options: options, 24 | // onChanged: onChanged, 25 | // selectValue: selectValue)), 26 | ); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /dbus/freedesktop/bluez/examples/scan.rs: -------------------------------------------------------------------------------- 1 | //! Basic example: Scan available Bluetooth devices using freedesktop-bluez-client 2 | 3 | use bluez::service::BluetoothService; 4 | 5 | #[tokio::main] 6 | async fn main() -> anyhow::Result<()> { 7 | // Create a channel for sending Bluetooth requests 8 | let bluetooth_service = BluetoothService::new().await?; 9 | let discovery_durations:core::time::Duration = core::time::Duration::from_secs(5); 10 | let available_devices = match bluetooth_service.get_available_devices(discovery_durations).await { 11 | Ok(devices) => devices, 12 | Err(e) => { 13 | eprintln!("Error getting available devices: {e}"); 14 | return Ok(()); 15 | } 16 | }; 17 | 18 | for device in available_devices { 19 | println!("Discovered Bluetooth device: {:?}", device); 20 | } 21 | 22 | // (Optional) gracefully shut down or send more requests... 23 | 24 | // Wait for the handler to finish (in real code, you'd keep the handler running) 25 | // handler.await?; 26 | 27 | Ok(()) 28 | } 29 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/wireless-low.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /apps/files/elinux/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Sony Corporation. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_WINDOW_ 6 | #define FLUTTER_WINDOW_ 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | class FlutterWindow { 14 | public: 15 | explicit FlutterWindow( 16 | const flutter::FlutterViewController::ViewProperties view_properties, 17 | const flutter::DartProject project); 18 | ~FlutterWindow() = default; 19 | 20 | // Prevent copying. 21 | FlutterWindow(FlutterWindow const&) = delete; 22 | FlutterWindow& operator=(FlutterWindow const&) = delete; 23 | 24 | bool OnCreate(); 25 | void OnDestroy(); 26 | void Run(); 27 | 28 | private: 29 | flutter::FlutterViewController::ViewProperties view_properties_; 30 | flutter::DartProject project_; 31 | std::unique_ptr flutter_view_controller_; 32 | }; 33 | 34 | #endif // FLUTTER_WINDOW_ 35 | -------------------------------------------------------------------------------- /apps/music/elinux/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Sony Corporation. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_WINDOW_ 6 | #define FLUTTER_WINDOW_ 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | class FlutterWindow { 14 | public: 15 | explicit FlutterWindow( 16 | const flutter::FlutterViewController::ViewProperties view_properties, 17 | const flutter::DartProject project); 18 | ~FlutterWindow() = default; 19 | 20 | // Prevent copying. 21 | FlutterWindow(FlutterWindow const&) = delete; 22 | FlutterWindow& operator=(FlutterWindow const&) = delete; 23 | 24 | bool OnCreate(); 25 | void OnDestroy(); 26 | void Run(); 27 | 28 | private: 29 | flutter::FlutterViewController::ViewProperties view_properties_; 30 | flutter::DartProject project_; 31 | std::unique_ptr flutter_view_controller_; 32 | }; 33 | 34 | #endif // FLUTTER_WINDOW_ 35 | -------------------------------------------------------------------------------- /apps/notes/elinux/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Sony Corporation. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_WINDOW_ 6 | #define FLUTTER_WINDOW_ 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | class FlutterWindow { 14 | public: 15 | explicit FlutterWindow( 16 | const flutter::FlutterViewController::ViewProperties view_properties, 17 | const flutter::DartProject project); 18 | ~FlutterWindow() = default; 19 | 20 | // Prevent copying. 21 | FlutterWindow(FlutterWindow const&) = delete; 22 | FlutterWindow& operator=(FlutterWindow const&) = delete; 23 | 24 | bool OnCreate(); 25 | void OnDestroy(); 26 | void Run(); 27 | 28 | private: 29 | flutter::FlutterViewController::ViewProperties view_properties_; 30 | flutter::DartProject project_; 31 | std::unique_ptr flutter_view_controller_; 32 | }; 33 | 34 | #endif // FLUTTER_WINDOW_ 35 | -------------------------------------------------------------------------------- /apps/settings/elinux/runner/flutter_window.h: -------------------------------------------------------------------------------- 1 | // Copyright 2021 Sony Corporation. All rights reserved. 2 | // Use of this source code is governed by a BSD-style license that can be 3 | // found in the LICENSE file. 4 | 5 | #ifndef FLUTTER_WINDOW_ 6 | #define FLUTTER_WINDOW_ 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | 13 | class FlutterWindow { 14 | public: 15 | explicit FlutterWindow( 16 | const flutter::FlutterViewController::ViewProperties view_properties, 17 | const flutter::DartProject project); 18 | ~FlutterWindow() = default; 19 | 20 | // Prevent copying. 21 | FlutterWindow(FlutterWindow const&) = delete; 22 | FlutterWindow& operator=(FlutterWindow const&) = delete; 23 | 24 | bool OnCreate(); 25 | void OnDestroy(); 26 | void Run(); 27 | 28 | private: 29 | flutter::FlutterViewController::ViewProperties view_properties_; 30 | flutter::DartProject project_; 31 | std::unique_ptr flutter_view_controller_; 32 | }; 33 | 34 | #endif // FLUTTER_WINDOW_ 35 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/wireless-high.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /services/search/server/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "mxsearch" 3 | description = "Search service for the Mechanix shell" 4 | version = "0.1.0" 5 | edition = "2024" 6 | 7 | [dependencies] 8 | tokio = { workspace = true } 9 | anyhow = { workspace = true } 10 | log = { workspace = true } 11 | serde = { workspace = true } 12 | zbus = { workspace = true } 13 | env_logger = "0.11.8" 14 | thiserror = "2.0.12" 15 | toml = "0.9.2" 16 | apps = { path = "../apps" } 17 | files = { path = "../files" } 18 | app_actions = { path = "../app_actions" } 19 | sources = { path = "../sources" } 20 | 21 | [package.metadata.deb] 22 | maintainer = "Minesh Purohit " 23 | extended-description = """\ 24 | Configuration system for the Mechanix shell, services and gui apps.""" 25 | depends = "$auto" 26 | section = "utility" 27 | priority = "optional" 28 | assets = [ 29 | # target/release path is special, and gets replaced by cargo-deb with the actual target dir path. 30 | [ 31 | "../../../target/release/mxsearch", 32 | "usr/bin/", 33 | "755", 34 | ], 35 | 36 | ] 37 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/customWidgets/custom_container.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_settings/src/commons/styles/custom_styles.dart'; 3 | 4 | class ContainerWidget extends StatelessWidget { 5 | final Widget child; 6 | const ContainerWidget({super.key, required this.child}); 7 | 8 | @override 9 | Widget build(BuildContext context) { 10 | return Container( 11 | margin: EdgeInsets.symmetric(horizontal: 16, vertical: 0), 12 | child: child, 13 | ); 14 | } 15 | } 16 | 17 | class FixedHeightRow extends StatelessWidget { 18 | final Widget child; 19 | final bool? showTopBorder; 20 | final bool? showBottomBorder; 21 | 22 | const FixedHeightRow({ 23 | super.key, 24 | required this.child, 25 | this.showTopBorder = false, 26 | this.showBottomBorder = true, 27 | }); 28 | 29 | @override 30 | Widget build(BuildContext context) { 31 | return Container( 32 | height: 48, 33 | alignment: Alignment.center, 34 | decoration: rowBoxDecoration, 35 | child: child, 36 | ); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /assets/icons/status-bar/wireless-low.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /services/search/server/src/error.rs: -------------------------------------------------------------------------------- 1 | use thiserror::Error; 2 | 3 | #[derive(Error, Debug)] 4 | pub enum ServerError { 5 | #[error("Failed to build connection: {0}")] 6 | FailedBuildConnection(zbus::Error), 7 | #[error("Failed to register object: {0}")] 8 | FailedRegisterObject(zbus::Error), 9 | #[error("Failed to start app search service: {0}")] 10 | FailedStartAppSearchService(anyhow::Error), 11 | #[error("Failed to start file search service: {0}")] 12 | FailedStartFileSearchService(anyhow::Error), 13 | #[error("Failed to start app actions service: {0}")] 14 | FailedStartAppActionsService(anyhow::Error), 15 | #[error("Failed to start sources search service: {0}")] 16 | FailedStartExternalSearchService(anyhow::Error), 17 | #[error("Failed to start dbus server: {0}")] 18 | FailedStartDBusServer(zbus::Error), 19 | #[error("Failed to build proxy: {0}")] 20 | FailedBuildProxy(anyhow::Error), 21 | } 22 | 23 | #[derive(Error, Debug)] 24 | pub enum ServiceError { 25 | #[error("Failed to build connection: {0}")] 26 | CreateProxyError(String), 27 | } 28 | -------------------------------------------------------------------------------- /assets/icons/status-bar/wireless-medium.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /shell/crates/settings_drawer/src/services/network_sync.rs: -------------------------------------------------------------------------------- 1 | use crate::events::AppEvents; 2 | use futures::{SinkExt, channel::mpsc}; 3 | use networkmanager::service::NetworkManagerService; 4 | 5 | pub async fn sync_connected_network( 6 | mut tx: mpsc::Sender, 7 | network_manager_service: &NetworkManagerService, 8 | ) { 9 | match network_manager_service.list_networks().await { 10 | Ok(result) => { 11 | let connected_network = result.iter().find(|n| n.is_active).cloned(); 12 | let is_connected = result.iter().any(|n| n.is_active && !n.ssid.is_empty()); // IMP 13 | 14 | let _ = tx 15 | .send(AppEvents::ConnectedNetwork { 16 | network: if is_connected { 17 | connected_network.clone() 18 | } else { 19 | None 20 | }, 21 | }) 22 | .await; 23 | } 24 | Err(e) => { 25 | eprintln!("Failed to get active network: {}", e); 26 | return; 27 | } 28 | }; 29 | } 30 | -------------------------------------------------------------------------------- /apps/settings/lib/src/features/display/bloc/display_state.dart: -------------------------------------------------------------------------------- 1 | part of 'display_bloc.dart'; 2 | 3 | class DisplayState extends Equatable { 4 | const DisplayState({ 5 | this.brightness = 0.4, 6 | this.isAutoBrightness = true, 7 | this.screenTimeout = 30, 8 | this.lockScreenTimeout = 30, 9 | }); 10 | 11 | final double brightness; 12 | final bool isAutoBrightness; 13 | final double screenTimeout; 14 | final double lockScreenTimeout; 15 | 16 | DisplayState copyWith({ 17 | double? brightness, 18 | bool? isAutoBrightness, 19 | double? screenTimeout, 20 | double? lockScreenTimeout, 21 | }) { 22 | return DisplayState( 23 | brightness: brightness ?? this.brightness, 24 | isAutoBrightness: isAutoBrightness ?? this.isAutoBrightness, 25 | screenTimeout: screenTimeout ?? this.screenTimeout, 26 | lockScreenTimeout: lockScreenTimeout ?? this.lockScreenTimeout, 27 | ); 28 | } 29 | 30 | @override 31 | List get props => [ 32 | brightness, 33 | isAutoBrightness, 34 | screenTimeout, 35 | lockScreenTimeout, 36 | ]; 37 | } 38 | -------------------------------------------------------------------------------- /apps/files/lib/src/commons/customWidgets/custom_button.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomButton extends StatelessWidget { 4 | final String label; 5 | final VoidCallback onPressed; 6 | final Color backgroundColor; 7 | final Color textColor; 8 | final EdgeInsets padding; 9 | final double borderRadius; 10 | 11 | const CustomButton({ 12 | super.key, 13 | required this.label, 14 | required this.onPressed, 15 | this.backgroundColor = Colors.grey, 16 | this.textColor = Colors.white, 17 | this.padding = const EdgeInsets.symmetric(horizontal: 20, vertical: 12), 18 | this.borderRadius = 8.0, 19 | }); 20 | 21 | @override 22 | Widget build(BuildContext context) { 23 | return ElevatedButton( 24 | style: ElevatedButton.styleFrom( 25 | backgroundColor: backgroundColor, 26 | foregroundColor: textColor, 27 | shape: RoundedRectangleBorder( 28 | borderRadius: BorderRadius.circular(borderRadius), 29 | ), 30 | padding: padding, 31 | ), 32 | onPressed: onPressed, 33 | child: Text(label), 34 | ); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/customWidgets/custom_loader.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:mechanix_settings/src/commons/constants.dart'; 3 | 4 | class CustomLoader extends StatefulWidget { 5 | const CustomLoader({super.key}); 6 | 7 | @override 8 | State createState() => _CustomLoaderState(); 9 | } 10 | 11 | class _CustomLoaderState extends State 12 | with SingleTickerProviderStateMixin { 13 | late final AnimationController _controller; 14 | 15 | @override 16 | void initState() { 17 | super.initState(); 18 | _controller = AnimationController( 19 | vsync: this, 20 | duration: const Duration(seconds: 1), 21 | )..repeat(); 22 | } 23 | 24 | @override 25 | void dispose() { 26 | _controller.dispose(); 27 | super.dispose(); 28 | } 29 | 30 | @override 31 | Widget build(BuildContext context) { 32 | return RotationTransition( 33 | turns: _controller, 34 | child: Image.asset( 35 | Images.loaderIcon, // Put your image here 36 | width: 20, 37 | height: 20, 38 | ), 39 | ); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /apps/music/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 DhanishMecha 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /apps/notes/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Dhanish Patel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /apps/notes/lib/src/commons/styles/colors.dart: -------------------------------------------------------------------------------- 1 | import 'dart:ui'; 2 | 3 | class NotesColors { 4 | static const Color labelColor = Color(0xFF8F8F8F); 5 | static const Color titleTextColor = Color(0xFFD2D2D2); 6 | static const Color cardColor = Color(0xFF151515); 7 | static const Color secondaryCardColor = Color(0xFF6D2EFF); 8 | static const Color secondaryButtonColor = Color(0xFF464646); 9 | static const Color secondaryTextColor = Color(0xFF9488FF); 10 | static const String highlightColor = "#2C1266"; 11 | static const Color highlightColorFormat = Color(0xFF2C1266); 12 | static const Color editorTextColor = Color(0xFFA4A4A4); 13 | static const Color codeBlockTextColor = Color(0xFFE9E9E9); 14 | static const Color floatingMenuColor = Color(0xFF222222); 15 | static const Color floatingMenuBorderColor = Color(0xFF3A3A3A); 16 | static const Color highlightTextColor = Color(0xFF7750FF); 17 | static const Color checkboxBorderColor = Color(0xFFF0F0F0); 18 | static const Color strikeThroughColor = Color(0xFF797979); 19 | static const Color dividerColor = Color(0xFF585858); 20 | static const Color bottomSheetColor = Color(0xFFF00000); 21 | } 22 | -------------------------------------------------------------------------------- /apps/settings/lib/src/commons/styles/custom_styles.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | const TextStyle baseHeaderStyle = TextStyle( 4 | color: Color(0xFFFAFBFC), 5 | fontWeight: FontWeight.w500, 6 | fontSize: 16, 7 | ); 8 | 9 | BoxDecoration rowBoxDecoration = BoxDecoration( 10 | color: Color(0xFF2B2B2B), 11 | borderRadius: BorderRadius.circular(8), 12 | ); 13 | 14 | const TextStyle secondaryHeaderStyle = TextStyle( 15 | color: Color(0xFF898A8D), 16 | fontWeight: FontWeight.w500, 17 | fontSize: 16, 18 | ); 19 | 20 | ButtonStyle buttonStyle = ButtonStyle( 21 | backgroundColor: WidgetStateProperty.resolveWith( 22 | (states) { 23 | if (states.contains(WidgetState.pressed)) { 24 | return Color(0xFF3A3A3A); 25 | } 26 | return Color(0xFF3A3A3A); 27 | }, 28 | ), 29 | padding: WidgetStateProperty.all( 30 | EdgeInsets.symmetric(horizontal: 12, vertical: 8), 31 | ), 32 | foregroundColor: WidgetStateProperty.all(Color(0xFF2D8AFF)), 33 | shape: WidgetStateProperty.all( 34 | RoundedRectangleBorder( 35 | borderRadius: BorderRadius.circular(8), 36 | ), 37 | ), 38 | ); 39 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/rotation-off.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/icons/settings-drawer/rotation-on.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | --------------------------------------------------------------------------------