50 Commits

Author SHA1 Message Date
eshanized
9af93ae123 🐛 fix: /usr/lib/snigdhaos-assistant/apply.sh: line 6: /var/log/snigdhaos_assistant.log: Permission denied 2025-01-07 22:24:29 +05:30
eshanized
0d71b4b9f9 🧹 chore: remove confirmation 2025-01-07 22:23:16 +05:30
eshanized
25fae6a60a 🐛 fix: _added wm class up 2024-12-31 05:28:07 +05:30
eshanized
8b85d24ecb 🧹 chore: add list of packages, remove some packages 2024-12-31 05:27:03 +05:30
eshanized
1fd1d76e07 🧹 chore: add and remove packages 2024-12-31 05:20:50 +05:30
eshanized
9e6faf2b48 🧹 chore: add and remove packages 2024-12-31 05:19:32 +05:30
eshanized
588efd89ff 🧹 chore: add and remove packages 2024-12-31 05:17:27 +05:30
eshanized
51e56aeef8 ️ perf: add more packages 2024-12-31 05:14:54 +05:30
eshanized
6c72ea45f8 🧹 chore: add and remove packages 2024-12-31 05:13:54 +05:30
eshanized
dbe7d1df9b 🧹 chore: removed and addition in packages 2024-12-31 05:11:26 +05:30
eshanized
9345742295 🧹 chore: removed scope from the script 2024-12-31 05:09:07 +05:30
eshanized
9e16b410c1 🚀 feat(_lic): add Snigdha OS in lic 2024-12-20 00:34:12 +05:30
eshanized
e3af57ffa5 🐛 fix(_): v.21 2024-12-20 00:32:05 +05:30
eshanized
4e557708b7 🐛 fix(_): v2.1 2024-12-20 00:31:19 +05:30
eshanized
46900f4934 🐛 fix(_dir): error logger dir 2024-12-20 00:30:25 +05:30
eshanized
bc4ee677a4 🚀 feat(_error): add error handling and logging 2024-12-20 00:28:37 +05:30
eshanized
6c9c6f85cd 📝 docs(_exp): within the code 2024-12-20 00:25:17 +05:30
eshanized
13258d65eb 📝 docs(_explain): line by line 2024-12-20 00:19:01 +05:30
eshanized
04ac16a7e3 🐛 fix(_rm): gitlab deps 2024-12-20 00:15:23 +05:30
eshanized
dba6c72da3 🐛 fix: v2.0 2024-12-20 00:14:36 +05:30
eshanized
7bffbd94b0 🐛 fix(_sp): space provided 2024-12-20 00:13:06 +05:30
eshanized
13e7335b27 🐛 fix(_adj): conv. commit 2024-12-20 00:11:48 +05:30
eshanized
076eaa57e7 📝 docs(docs): update documentation 2024-12-20 00:10:25 +05:30
eshanized
396c5e8630 🚀 feat(bump): v2.1 2024-12-20 00:06:19 +05:30
Eshan Roy
ecadfa1321 🔨 refactor(optimize): added git pull to the script 2024-08-01 03:43:35 +05:30
Eshan Roy
83023dc463 🔨 refactor(n/a): add emojis 2024-07-26 17:40:34 +05:30
Eshan Roy
3e11e4677d ci change
ci change
2024-07-13 12:34:14 +06:00
Eshan Roy
56e1475283 Merge branch 'Snigdha-OS:master' into master 2024-07-13 12:33:32 +06:00
Eshan Roy
65a8a61d46 🤖 ci(workflows): replace and alter commit check 2024-07-13 12:32:54 +06:00
Eshan Roy
6fe7f1d252 🐞 fix(url): change to google.com 2024-07-05 15:32:19 +05:30
Eshan Roy
c19e9d106a 🤖 ci(upgrade): own conventional commit checker 2024-07-05 15:29:19 +05:30
Eshan Roy
d3b5426e67 (script): + conventional commit 2024-07-05 15:27:10 +05:30
Eshan Roy (Eshanized)
e9f96fe1a2 docs(exec): update will go later on 2024-05-10 03:39:06 +05:30
Eshan Roy (Eshanized)
43f74f3a84 docs(reform): reformat the files with explanation 2024-05-10 03:34:34 +05:30
Eshan Roy (Eshanized)
2e57e70c70 refactor(reform): re format the comments as explanation 2024-05-10 03:31:13 +05:30
Eshan Roy (Eshanized)
3e578ee7d0 docs(exp): explained the file 2024-05-10 03:25:30 +05:30
Eshan Roy (Eshanized)
cc957dde6e docs(exp): explained the headers from Qt Libs 2024-05-10 03:19:50 +05:30
Eshan Roy (Eshanized)
354fb7da13 fix(remove): kernel installation 2024-05-10 03:15:10 +05:30
Eshan Roy (Eshanized)
6b41426744 fix(pkgs): fixed list 2024-05-10 03:14:22 +05:30
Eshan Roy (Eshanized)
786b5bf679 style(emojis): add emojis 2024-05-10 03:08:12 +05:30
Eshan Roy (Eshanized)
2f929636f4 feat(pkg): add package list 2024-05-05 11:21:55 +05:30
Eshan Roy (Eshanized)
eb12e17fcc perf(add): add remote op packages 2024-05-05 09:56:32 +05:30
Eshan Roy (Eshanized)
7d1c996739 perf(clr): remove all existing packages 2024-05-05 09:51:38 +05:30
Eshan Roy (Eshanized)
6719fc5ee3 refactor(mod): modified some description 2024-05-05 09:50:36 +05:30
Eshan Roy (Eshanized)
7733681dad feat(reconf): re write browser list with new 2024-05-05 01:07:05 +05:30
Eshan Roy (Eshanized)
09046ea29a perf(rmv): remove all existing packages 2024-05-05 00:50:49 +05:30
Eshan Roy (Eshanized)
ddbe442260 feat(pkgs): add packages to audio list 2024-05-05 00:49:54 +05:30
Eshan Roy (Eshanized)
7a879b5e3f perf(pkgs): add packages 2024-05-05 00:32:49 +05:30
Eshan Roy (Eshanized)
b72acd6809 feat(pkgs): add packages 2024-05-04 23:36:05 +05:30
Eshan Roy (Eshanized)
d2331babed perf(bak): remove existing packages 2024-05-04 23:25:11 +05:30
32 changed files with 1009 additions and 405 deletions

View File

@@ -1,6 +0,0 @@
---
commitizen:
name: cz_conventional_commits
tag_format: $version
version_provider: scm
version_scheme: semver

38
.github/workflows/cz.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: Check Conventional Commit
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
check-commit-message:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Check Conventional Commit
run: |
# Define the conventional commit types with emojis
TYPES=("🚀 feat" "🐛 fix" "📝 docs" "✨ style" "🛠 refactor" "⚡️ perf" "🔬 test" "🔧 build" "🤖 ci" "🧹 chore" "⏪ revert")
# Extract the commit type and emoji from the commit message
COMMIT_MSG=$(git log --format=%B -n 1)
for type in "${TYPES[@]}"; do
type_emoji=${type}
type=${type_emoji#* }
emoji=${type_emoji% *}
if [[ $COMMIT_MSG == $emoji* ]]; then
echo "Commit message is a conventional commit"
exit 0
fi
done
# If we reach here, the commit message is not a conventional commit
echo "Commit message is not a conventional commit"
exit 1

View File

@@ -1,30 +0,0 @@
name: Snigdha OS Commitizen Check on Push
on:
push:
branches:
- master
jobs:
commitizen_check:
name: Check Commitizen Commit on Push
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: '14'
- name: Install Commitizen
run: npm install -g commitizen
- name: Verify Commitizen Commit
run: |
if git log --format='%s' ${{ github.event.before }}..${{ github.sha }} | grep -v '^(feat|fix|docs|style|refactor|perf|test|chore)(\(.+\))?: .+'; then
echo "Invalid commit message found. Please use Commitizen convention."
exit 1
fi

View File

@@ -1,30 +0,0 @@
name: Snigdha OS Commitizen Check On Pull
on:
pull_request:
branches:
- master
jobs:
commitizen_check:
name: Check Commitizen Commit on Pull Request
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: '14'
- name: Install Commitizen
run: npm install -g commitizen
- name: Verify Commitizen Commit
run: |
if git log --format='%s' ${{ github.event.before }}..${{ github.sha }} | grep -v '^(feat|fix|docs|style|refactor|perf|test|chore)(\(.+\))?: .+'; then
echo "Invalid commit message found. Please use Commitizen convention."
exit 1
fi

View File

@@ -1,37 +0,0 @@
---
stages: [checks, release]
check-commitizen:
# Check the current commit message for compliance with commitizen
stage: checks
image: alpine:latest
variables:
GIT_STRATEGY: none
script:
- apk add --no-cache --upgrade py3-pip
# Pass --break-system-packages since since this containers sole purpose is
# running 2 applications. If we get to advance this, implement a proper venv
- pip install --break-system-packages commitizen
- cz check --message "$CI_COMMIT_MESSAGE" >/tmp/cz_check || true # why does it return 1 if its actually 0?
- grep "successful" /tmp/cz_check # ugly hack to workaround the above issue
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
tag-to-release:
stage: release
# https://gitlab.com/gitlab-org/release-cli/-/blob/master/Dockerfile
image: registry.gitlab.com/gitlab-org/release-cli:latest
variables:
GIT_STRATEGY: none
script:
- apk add --no-cache --upgrade git py3-pip
# Pass --break-system-packages since since this containers sole purpose is
# running 2 applications. If we get to advance this, implement a proper venv
- pip install --break-system-packages -U commitizen
- git clone "$CI_PROJECT_URL.git"
- cd "$CI_PROJECT_NAME"
- CHANGELOG=$(cz changelog "$CI_COMMIT_TAG" --dry-run | sed /^Invalid/d)
- release-cli create --name "$CI_COMMIT_TAG" --description "$CHANGELOG" --tag-name "$CI_COMMIT_TAG"
rules:
- if: $CI_COMMIT_TAG != null

View File

@@ -1,17 +1,41 @@
# Specify the minimum CMake version required for the project.
cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
# Define the project name, version, and the programming language used.
project(snigdhaos-assistant VERSION 0.1 LANGUAGES CXX) project(snigdhaos-assistant VERSION 0.1 LANGUAGES CXX)
# Include the current directory in the list of include directories.
set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Enable automatic handling of Qt-specific features (UIC, MOC, RCC).
# AUTOUIC processes the .ui file (qt/snigdhaosassistant.ui) to generate the corresponding
# header file, enabling seamless integration of the GUI layout into the application.
set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOUIC ON)
# AUTOMOC processes the Q_OBJECT macro in header files (like qt/snigdhaosassistant.h)
# to enable Qt's signal-slot mechanism and other meta-object features.
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
# AUTORCC (though not explicitly used here) would manage resources if a .qrc file were included
# in PROJECT_SOURCES.
set(CMAKE_AUTORCC ON) set(CMAKE_AUTORCC ON)
# Specify the version of the C++ standard to use.
# Here, we are setting it to C++17 to enable modern language features such as std::optional,
# std::filesystem, structured bindings, and more.
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
# Enforce the requirement for the specified C++ standard.
# If the compiler does not support C++17, the build process will fail with an error.
# This ensures compatibility and prevents fallback to an older C++ standard.
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
# This line explicitly searches for either Qt6 or Qt5 and requires the Widgets and Network components.
# The NAMES argument tells CMake to look for these specific versions (Qt6 and Qt5).
# If neither version is found, an error will be raised due to the REQUIRED keyword.
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network)
# This line dynamically selects the Qt version based on the value of the variable QT_VERSION_MAJOR.
# If QT_VERSION_MAJOR is 6, it will search for Qt6; if QT_VERSION_MAJOR is 5, it will search for Qt5.
# It also requires the Widgets and Network components, and will raise an error if they are not found.
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network)
set(PROJECT_SOURCES set(PROJECT_SOURCES

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 SNIGDHA OS
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

85
README.md Normal file
View File

@@ -0,0 +1,85 @@
# Snigdha OS Assistant 🚀
Snigdha OS Assistant is a **Post Package Installer** designed to make setting up your Snigdha OS system a breeze! 🌟 Inspired by the post-installation tools of [Garuda Linux](https://garudalinux.org/), this utility simplifies the process of installing essential software, saving you time and effort. Whether youre a power user or a newcomer, Snigdha OS Assistant ensures your system is up and running with just a few clicks. 💻
## ✨ Features
- **🚀 Automated Package Installation**: Get your system ready in no time with pre-configured installation options.
- **⚙️ Custom Configuration**: Tailor the assistant to install only the packages you need.
- **🎨 User-Friendly Interface**: Designed with simplicity and efficiency in mind.
- **💾 Lightweight and Fast**: Built specifically for Snigdha OS, ensuring seamless performance.
## 📦 Installation
Follow these steps to install Snigdha OS Assistant:
1. **Clone the Repository** 🌀
```bash
git clone https://github.com/Snigdha-OS/snigdhaos-assistant.git
```
2. **Navigate to the Directory** 📂
```bash
cd snigdhaos-assistant
```
3. **Run the Installer** 🛠️
```bash
./install.sh
```
Thats it! 🎉 Snigdha OS Assistant is now ready to use.
## 🚀 Usage
Launch Snigdha OS Assistant by running:
```bash
snigdhaos-assistant
```
Follow the intuitive on-screen instructions to select and install your preferred packages. 🖱️
## 🤝 Contributing
Were always looking for ways to improve Snigdha OS Assistant, and wed love your help! 🌍
1. **Fork the Repository** 🍴
2. **Create a New Branch** 🛤️
```bash
git checkout -b feature-branch
```
3. **Make Your Changes** ✏️
4. **Commit Your Changes** ✅
```bash
git commit -m "Description of your changes"
```
5. **Push to Your Fork** 📤
```bash
git push origin feature-branch
```
6. **Submit a Pull Request** 🔄
Head to the original repository and click on "New Pull Request" to propose your changes.
## 📜 License
This project is licensed under the **MIT License**. For more details, see the [LICENSE](LICENSE) file.
## 🙌 Acknowledgements
A huge shout-out to the team behind [Garuda Linux](https://garudalinux.org/) for inspiring this project. Your tools have set a benchmark for simplicity and functionality! 🌟
---
Stay tuned for updates and new features! Follow us on [GitHub](https://github.com/Snigdha-OS) to learn more about Snigdha OS and our other projects. 💻

View File

@@ -1,22 +1,81 @@
#!/bin/bash #!/bin/bash
# Author : Eshan Roy <eshan@snigdhaos.org> # Author: Eshan Roy <eshan@snigdhaos.org>
# Author URL: https://eshanized.github.io/ # Author URI: https://eshanized.github.io
# Setting up Author's Git Credentials set -e
echo
echo "################################################################################"
echo -e "If you have write Access, create another file excluding the name 'config.sh'"
echo "################################################################################"
echo
# Git Credentials: # Function to display usage instructions
git config --global pull.rebase false # Merge usage() {
git config --global user.name "Eshan Roy (Eshanized)" cat <<EOF
git config --global user.email "m.eshanized@gmail.com" Usage: ${0##*/} [--email <email>] [--username <username>] [-h]
echo Options:
echo "################################################################################" --email <email> Set the GitHub user email.
echo -e "If you have write Access, create another file excluding the name 'config.sh'" --username <username> Set the GitHub username.
echo "################################################################################" -h, --help Display this help message.
echo
Description:
This script configures your GitHub user.email and user.name settings globally.
If no arguments are provided, it will prompt for input interactively.
Examples:
${0##*/} --email user@example.com --username "Eshan Roy"
EOF
exit 1
}
# Parse command-line arguments
while [[ "$#" -gt 0 ]]; do
case "$1" in
--email)
EMAIL="$2"
shift 2
;;
--username)
USERNAME="$2"
shift 2
;;
-h|--help)
usage
;;
*)
echo "Unknown argument: $1"
usage
;;
esac
done
# Prompt for email if not provided
if [[ -z "${EMAIL:-}" ]]; then
read -p "Enter your GitHub Email: " EMAIL
fi
# Prompt for username if not provided
if [[ -z "${USERNAME:-}" ]]; then
read -p "Enter your GitHub Username: " USERNAME
fi
# Validate email format
if ! [[ "$EMAIL" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then
echo "Error: Invalid email format: $EMAIL"
exit 1
fi
# Validate username (allowing alphanumerics, dashes, underscores, and dots)
if ! [[ "$USERNAME" =~ ^[a-zA-Z0-9._-]+$ ]]; then
echo "Error: Invalid username format: $USERNAME"
exit 1
fi
# Configure GitHub global settings
git config --global user.email "$EMAIL"
git config --global user.name "$USERNAME"
# Display success message
echo -e "\033[1;32mGitHub configuration setup successful!\033[0m"
echo " User Email: $EMAIL"
echo " Username: $USERNAME"
echo -e "\033[1;36mYou can verify this configuration using the following commands:\033[0m"
echo " git config --global user.email"
echo " git config --global user.name"

93
push.sh
View File

@@ -1,32 +1,77 @@
#!/bin/bash #!/bin/bash
# Author : Eshan Roy # Author : ESHAN ROY
# URI : https://eshanized.github.io # Author URI : https://eshanized.github.io
# NOTE: If you are on Snigdha OS, # Define the conventional commit types with new emojis
# you can install commitizen-go with `sudo pacman -S commitizen-go` TYPES=("🚀 feat" "🐛 fix" "📝 docs" "✨ style" "🛠 refactor" "⚡️ perf" "🔬 test" "🔧 build" "🤖 ci" "🧹 chore" "⏪ revert")
# or `s commitizen-go`. Else you need to install `yay` or `yay-bin`
# to install commitizen. I have written this script only for *Arch Linux.
# Function to check if Commitizen is installed # Function to display an error and exit and
check_commitizen() { error_exit() {
if ! pacman -Qq commitizen-go &> /dev/null; then echo -e "\033[1;31m[ERROR]\033[0m $1"
echo "Commitizen is not installed. Please install it using 'yay -S commitizen-go'." >&2 exit 1
exit 1 }
# Ensure the script is run in a Git repository
git rev-parse --is-inside-work-tree > /dev/null 2>&1 || error_exit "This is not a Git repository."
# Get the current branch name
branch=$(git rev-parse --abbrev-ref HEAD)
# Pull the latest changes from the remote repository
echo "Pulling latest changes from remote branch '$branch'..."
git pull origin "$branch" || error_exit "Failed to pull changes from the remote repository. Please resolve any conflicts manually."
# Prompt the user to select a commit type
echo "Select a commit type:"
select type in "${TYPES[@]}"; do
if [[ -n "$type" ]]; then
break
else
echo "Invalid selection. Please try again."
fi fi
} done
# Function to stage, commit, and push changes # Extract the commit type and emoji from the selection
push_to_github() { type_emoji=${type}
git add . type=${type_emoji#* }
git cz emoji=${type_emoji% *}
git push origin master
}
# Main Function # Prompt the user to enter a short description
main() { read -p "Enter a short description: " desc
check_commitizen if [ -z "$desc" ]; then
push_to_github error_exit "A short description is required!"
} fi
main # Prompt the user to enter a longer description (optional)
read -p "Enter a longer description (optional): " long_desc
# Create the commit message
commit_msg="$emoji $type: $desc"
# If a longer description was provided, add it to the commit message
if [ -n "$long_desc" ]; then
commit_msg+="\n\n$long_desc"
fi
# Print the commit message to the console
echo -e "\nCommit message:"
echo -e "\033[1;36m$commit_msg\033[0m"
# Stage all changes
git add .
# Commit the changes with the conventional commit message
if git commit -m "$commit_msg"; then
echo -e "\033[1;32mCommit successful!\033[0m"
else
error_exit "Commit failed."
fi
# Push the changes to the remote repository
echo "Pushing changes to remote branch '$branch'..."
if git push origin "$branch"; then
echo -e "\033[1;32mChanges pushed to remote branch '$branch'.\033[0m"
else
error_exit "Push failed. Please check your connection or branch permissions."
fi

View File

@@ -1,11 +1,31 @@
/*
* main function of the application, responsible for starting the Qt application and
* creating an instance of the SnigdhaOSAssistant class.
*/
#include "snigdhaosassistant.h" #include "snigdhaosassistant.h"
#include <QApplication> #include <QApplication>
/*
* creates a QApplication object, which manages the GUI application's control flow and main settings.
*/
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
/*
* creates an instance of the SnigdhaOSAssistant class named w.
* it passes nullptr as the parent widget and either the second command line argument (argv[1])
* or an empty string as the initial state of the application.
*/
SnigdhaOSAssistant w(nullptr, a.arguments().length() > 1 ? a.arguments()[1] : ""); SnigdhaOSAssistant w(nullptr, a.arguments().length() > 1 ? a.arguments()[1] : "");
/*
* displays the main window of the application (w) on the screen.
*/
w.show(); w.show();
/*
* starts the event loop of the application by calling the exec() function of the QApplication object (a).
* the event loop waits for events to occur and dispatches them to event handlers.
* the function will return when the application exits, typically after the main window is closed.
*/
return a.exec(); return a.exec();
} }

View File

@@ -16,8 +16,16 @@
#include <QtNetwork/QNetworkReply> #include <QtNetwork/QNetworkReply>
#include <unistd.h> #include <unistd.h>
const char* INTERNET_CHECK_URL = "https://snigdhaos.org"; /*
* a constant variable INTERNET_CHECK_URL which stores the URL to check for internet connectivity.
*/
const char* INTERNET_CHECK_URL = "https://google.com/";
/*
* constructor for the SnigdhaOSAssistant class.
* it sets up the window icon, initializes the user interface, modifies window flags,
* retrieves the last modified date of the application executable, and updates the application state.
*/
SnigdhaOSAssistant::SnigdhaOSAssistant(QWidget *parent, QString state) SnigdhaOSAssistant::SnigdhaOSAssistant(QWidget *parent, QString state)
: QMainWindow(parent) : QMainWindow(parent)
, ui(new Ui::SnigdhaOSAssistant) , ui(new Ui::SnigdhaOSAssistant)
@@ -29,43 +37,52 @@ SnigdhaOSAssistant::SnigdhaOSAssistant(QWidget *parent, QString state)
updateState(state); updateState(state);
} }
/*
* destructor for the SnigdhaOSAssistant class, responsible for cleaning up the user interface object.
*/
SnigdhaOSAssistant::~SnigdhaOSAssistant() SnigdhaOSAssistant::~SnigdhaOSAssistant()
{ {
delete ui; delete ui;
} }
void SnigdhaOSAssistant::doInternetUpRequest(){ void SnigdhaOSAssistant::doInternetUpRequest(){
// Create a network manager to handle the request.
QNetworkAccessManager* network_manager = new QNetworkAccessManager(); QNetworkAccessManager* network_manager = new QNetworkAccessManager();
// Send a HEAD request to the specified URL to check internet connectivity.
auto network_reply = network_manager->head(QNetworkRequest(QString(INTERNET_CHECK_URL))); auto network_reply = network_manager->head(QNetworkRequest(QString(INTERNET_CHECK_URL)));
// Create a timer to limit the duration of the network request to 5000 milliseconds (5 seconds).
QTimer* timer = new QTimer(this); QTimer* timer = new QTimer(this);
timer->setSingleShot(true); timer->setSingleShot(true); // Ensure the timer fires only once.
timer->start(5000); timer->start(5000); // Start the timer with a 5-second timeout.
// Did we time out? Try again! // Connect the timer's timeout signal to handle request timeouts.
connect(timer, &QTimer::timeout, this, [this, timer, network_reply, network_manager]() { connect(timer, &QTimer::timeout, this, [this, timer, network_reply, network_manager]() {
timer->deleteLater(); timer->deleteLater(); // Clean up the timer.
network_reply->abort(); network_reply->abort(); // Abort the network request if it's still ongoing.
network_reply->deleteLater(); network_reply->deleteLater(); // Clean up the network reply object.
network_manager->deleteLater(); network_manager->deleteLater(); // Clean up the network manager object.
doInternetUpRequest(); doInternetUpRequest(); // Retry the internet connectivity check.
}); });
// Request is done! // Connect the network reply's finished signal to handle the completion of the request.
connect(network_reply, &QNetworkReply::finished, this, [this, timer, network_reply, network_manager]() { connect(network_reply, &QNetworkReply::finished, this, [this, timer, network_reply, network_manager]() {
timer->stop(); timer->stop(); // Stop the timer as the request has completed.
timer->deleteLater(); timer->deleteLater(); // Clean up the timer.
network_reply->deleteLater(); network_reply->deleteLater(); // Clean up the network reply object.
network_manager->deleteLater(); network_manager->deleteLater(); // Clean up the network manager object.
// Check if the request was successful.
if (network_reply->error() == network_reply->NoError) { if (network_reply->error() == network_reply->NoError) {
// Wooo! // If no error occurred, transition the application state to UPDATE.
updateState(State::UPDATE); updateState(State::UPDATE);
} }
// Boo! else {
else // If an error occurred, retry the internet connectivity check.
doInternetUpRequest(); doInternetUpRequest();
}
}); });
} }
@@ -214,7 +231,7 @@ void SnigdhaOSAssistant::populateSelectWidget(){
populateSelectWidget("/usr/lib/snigdhaos-assistant/nvidia.txt", "Nvidia"); populateSelectWidget("/usr/lib/snigdhaos-assistant/nvidia.txt", "Nvidia");
populateSelectWidget("/usr/lib/snigdhaos-assistant/input-method.txt", "Input"); populateSelectWidget("/usr/lib/snigdhaos-assistant/input-method.txt", "Input");
populateSelectWidget("/usr/lib/snigdhaos-assistant/pkgmngrs.txt", "Software centers"); populateSelectWidget("/usr/lib/snigdhaos-assistant/pkgmngrs.txt", "Software centers");
populateSelectWidget("/usr/lib/snigdhaos-assistant/kernels.txt", "Kernels"); // populateSelectWidget("/usr/lib/snigdhaos-assistant/kernels.txt", "Kernels");
populateSelectWidget("/usr/lib/snigdhaos-assistant/office.txt", "Office"); populateSelectWidget("/usr/lib/snigdhaos-assistant/office.txt", "Office");
populateSelectWidget("/usr/lib/snigdhaos-assistant/browsers.txt", "Browsers"); populateSelectWidget("/usr/lib/snigdhaos-assistant/browsers.txt", "Browsers");
populateSelectWidget("/usr/lib/snigdhaos-assistant/mail.txt", "Email"); populateSelectWidget("/usr/lib/snigdhaos-assistant/mail.txt", "Email");

View File

@@ -4,23 +4,43 @@
* love from Bangladesh * love from Bangladesh
*/ */
/*
* preprocessor directives: ensures that the contents of the file are only included once in a translation unit,
* preventing multiple inclusions and potential naming conflicts
*/
#ifndef SNIGDHAOSASSISTANT_H #ifndef SNIGDHAOSASSISTANT_H
#define SNIGDHAOSASSISTANT_H #define SNIGDHAOSASSISTANT_H
/*class for main application windows*/
#include <QMainWindow> #include <QMainWindow>
/*abstract base class for buttons*/
#include <QAbstractButton> #include <QAbstractButton>
/*class for managing network operations*/
#include <QtNetwork/QNetworkAccessManager> #include <QtNetwork/QNetworkAccessManager>
/*
* defines a namespace for the user interface of the application, typically generated by Qt Designer.
* QT_BEGIN_NAMESPACE and QT_END_NAMESPACE are macros used to enclose the Qt namespace.
*/
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { namespace Ui {
class SnigdhaOSAssistant; class SnigdhaOSAssistant;
} }
QT_END_NAMESPACE QT_END_NAMESPACE
/*
* declares a class named SnigdhaOSAssistant, which inherits from QMainWindow.
* the Q_OBJECT macro is used to enable the Qt's meta-object system for this class,
* allowing features like signals and slots.
*/
class SnigdhaOSAssistant : public QMainWindow class SnigdhaOSAssistant : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
/*
* declares an enumeration type named State inside the SnigdhaOSAssistant class,
* containing various states that the application can be in.
*/
public: public:
enum class State { enum class State {
QUIT, QUIT,
@@ -37,18 +57,38 @@ public:
SUCCESS SUCCESS
}; };
/*
* constructor and destructor declarations for the SnigdhaOSAssistant class.
* the constructor takes a QWidget pointer as the parent widget and a QString representing
* the initial state of the application.
* the destructor has no parameters.
*/
SnigdhaOSAssistant(QWidget* parent = nullptr, QString state = "WELCOME"); SnigdhaOSAssistant(QWidget* parent = nullptr, QString state = "WELCOME");
~SnigdhaOSAssistant(); ~SnigdhaOSAssistant();
/*
* declare private slots, which are functions that can be connected to signals from widgets
*/
private slots: private slots:
void on_textWidget_buttonBox_clicked(QAbstractButton* button); void on_textWidget_buttonBox_clicked(QAbstractButton* button);
void on_selectWidget_buttonBox_clicked(QAbstractButton* button); void on_selectWidget_buttonBox_clicked(QAbstractButton* button);
/*
* These are private member variables of the SnigdhaOSAssistant class.
* ui is a pointer to the user interface object generated by Qt Designer.
* executable_modify_date is a QDateTime object representing the modification date of the executable.
* currentState is an instance of the State enumeration representing the current state of the application.
*/
private: private:
Ui::SnigdhaOSAssistant *ui; Ui::SnigdhaOSAssistant *ui;
QDateTime executable_modify_date; QDateTime executable_modify_date;
State currentState; State currentState;
/*
* private member functions of the SnigdhaOSAssistant class.
* they perform various tasks such as making internet requests,
* updating the application, populating select widgets,
* updating the application state, and relaunching the application.
*/
void doInternetUpRequest(); void doInternetUpRequest();
void doUpdate(); void doUpdate();
void doApply(); void doApply();

View File

@@ -1,22 +1,79 @@
#!/bin/bash
# Function to log messages to a log file
log_message() {
local log_file="/var/log/snigdhaos_assistant.log"
if [ -w "$log_file" ] || sudo touch "$log_file" 2>/dev/null; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | sudo tee -a "$log_file" > /dev/null
else
echo "Log file not writable: $log_file"
fi
}
# Check if the first file (setup script) exists and execute it
if [ -e "$1" ]; then if [ -e "$1" ]; then
echo "" echo ""
echo "Preparing setup.." echo "Preparing setup ⏳" # Show waiting emoji when preparing setup
echo "" echo ""
sudo bash - <$1 log_message "Executing setup script: $1"
if ! sudo bash - <$1; then
# If the setup script execution fails, print an error message with a cross emoji
echo "❌ Error executing setup script. Check logs for more details."
log_message "Error executing setup script: $1"
exit 1 # Exit the script if setup fails
fi
else
# If the setup script doesn't exist, show a warning with a caution emoji
echo "⚠️ Setup script ($1) not found! Skipping setup."
log_message "Setup script ($1) not found."
fi fi
# Install packages from the second file
echo "" echo ""
echo "Installing packages.." echo "Installing packages 🛠️" # Show tools emoji for package installation
echo "" echo ""
installable_packages=$(comm -12 <(pacman -Slq | sort) <(sed s/\\s/\\n/g - <$2 | sort)) installable_packages=$(comm -12 <(pacman -Slq | sort) <(sed s/\\s/\\n/g - <$2 | sort)) # Find common packages between the pacman repo and the list in $2
sudo pacman -S --needed $installable_packages && rm $2 || { read -p "Error! Press enter to return to Snigdha OS Assistant."; exit; }
if [ -z "$installable_packages" ]; then
# If no installable packages are found, show a warning with a caution emoji
echo "⚠️ No installable packages found. Skipping package installation."
log_message "No installable packages found from $2"
else
# If packages are found, list them and show a package emoji
echo "📦 The following packages will be installed: $installable_packages"
log_message "Installing packages: $installable_packages"
if ! sudo pacman -S --needed $installable_packages --noconfirm; then
# If the package installation fails, show an error with a cross emoji
echo "❌ Error installing packages. Check logs for more details."
log_message "Error installing packages: $installable_packages"
exit 1 # Exit the script if package installation fails
fi
rm -f $2 # Remove the file after successful installation
echo "✅ Packages installed successfully." # Show success emoji after installation
log_message "Packages installed successfully."
fi
# Check if the third file (service script) exists and execute it
if [ -e "$3" ]; then if [ -e "$3" ]; then
echo "" echo ""
echo "Enabling services.." echo "Enabling services ⚙️" # Show gear emoji for service enabling
echo "" echo ""
sudo bash - <$3 log_message "Enabling services from: $3"
if ! sudo bash - <$3; then
# If enabling services fails, show an error with a cross emoji
echo "❌ Error enabling services. Check logs for more details."
log_message "Error enabling services from: $3"
exit 1 # Exit the script if enabling services fails
fi
else
# If the service script doesn't exist, show a warning with a caution emoji
echo "⚠️ Service script ($3) not found! Skipping services."
log_message "Service script ($3) not found."
fi fi
# Final prompt
echo "" echo ""
read -p "Press enter to return to Snigdha OS Assistant." read -p "Press enter to return to Snigdha OS Assistant 🛑" # Show stop sign emoji for returning to the assistant
# End of script
log_message "Script execution completed successfully 🎉" # Log success with a celebration emoji

View File

@@ -1,39 +1,72 @@
false false
strawberry
Strawberry Player (Aimed at collectors)
false
lollypop
Lollypop (GNOME music player)
false
audacious
Audacious
false
cantata
Cantata (Frontend for mpd)
false
elisa
Elisa (Music player by KDE)
false
kwave
Kwave (Sound editor by KDE)
false
audacity
Audacity (Record/edit audio)
false
ardour
Ardour (Professional-grade audio workstation)
false
lmms
LMMS (The Linux MultiMedia Studio)
false
mixxx mixxx
Mixxx (Digital DJ'ing) Mixxx (Free, open-source DJ software for live mixing)
false
musescore
MuseScore (Sheet music notation)
false
rosegarden
Rosegarden (MIDI/audio sequencer)
false false
bitwig-studio bitwig-studio
Bitwig Studio (Digital audio workstation) Bitwig Studio (Music production and performance software)
false
bluelava
Bluelava (GNOME-based music player that works with Sonos)
false
fmp
FMP (Fast Music Player, lightweight and simple to use)
false
hydrogen
Hydrogen (Advanced drum machine for GNU/Linux)
false
jack
Jack Audio Connection Kit (Professional sound server for connecting audio devices)
false
jamulus
Jamulus (Online Jam Session software for musicians)
false
kaosilator
Kaosilator (A virtual music synthesizer and sequencer for improvisation)
false
kdenlive
Kdenlive (Non-linear video editor that also supports audio editing)
false
kodi
Kodi (Media center application with robust music playback capabilities)
false
libreoffice-impress
LibreOffice Impress (Presentation software, often used for musical slideshows)
false
muse
MuseScore (Music notation software for creating sheet music)
false
muse-extended
Muse (Full-featured music composition and production software)
false
playmidi
Playmidi (MIDI player and editor for Linux)
false
pulseaduio
PulseAudio (Sound system for POSIX OSes, essential for controlling audio devices)
false
qjackctl
QJackCtl (GUI for controlling the Jack Audio Connection Kit)
false
sickbeard
SickBeard (Automates downloading TV shows, music, and other media)
false
sonata
Sonata (A simple and easy-to-use music player for GNOME)
false
terminator
Terminator (Multi-terminal program for managing terminal windows, useful for music-based coding projects)
false
trackma
Trackma (A music player and manager that integrates with the media collection)
false
tunein
TuneIn (Internet radio streaming software)
false
vocaluxe
Vocaluxe (Karaoke program with support for online lyrics and music)
false
xiphqt
XiphQT (Audio player and converter that supports the Ogg format)
false
zita-ajbridge
Zita-AJBridge (A JACK audio connection bridge for PulseAudio)

View File

@@ -1,42 +1,60 @@
false false
brave-bin brave-bin
Brave Browser (Based on Chromium + privacy stuff) Brave Browser (Web browser that blocks ads and trackers by default)
false
firefox
Firefox (The original)
false
firefox-esr
Firefox ESR (Extended support release)
false false
chromium chromium
Chromium Chromium (A web browser built for speed, simplicity, and security)
false
chromium-widevine
Chromium Widevine (A browser plugin designed for the viewing of premium video content)
false
ungoogled-chromium
Ungoogled Chromium (Strips proprietary bits)
false
vivaldi vivaldi-ffmpeg-codecs
Vivaldi
false
opera opera-ffmpeg-codecs
Opera
false
torbrowser-launcher
Tor Browser (The Onion Router)
false
otter-browser
Otter Browser
false
brave-bin
Brave (Based on Chromium + privacy stuff)
false false
falkon falkon
Falkon (KDE browser) Falkon (Cross-platform QtWebEngine browser)
false false
seamonkey firefox
Seamonkey (Continuation of the Mozilla Internet Suite) Firefox (Firefox Web Browser)
false false
qutebrowser python-adblock firefox-esr
Qutebrowser (Keyboard driven, Vim-like browser) Firefox ESR (Firefox Extended Support Release)
false
google-chrome
Google Chrome (The popular web browser by Google)
false
icecat
Icecat (GNU version of the Firefox ESR browser)
false
librewolf
Librewolf (Community-maintained fork of Firefox, focused on privacy, security, and freedom)
false
opera
Opera (A fast and secure web browser)
false
qutebrowser
Qute Browser (A keyboard-driven, vim-like browser based on PyQt)
false
vivaldi
Vivaldi (An advanced browser made with the power user in mind)
false
midori
Midori (A lightweight, fast browser focused on simplicity)
false
epiphany
Epiphany (GNOME Web, a simple browser designed for GNOME)
false
lynx
Lynx (Text-based web browser)
false
w3m
W3m (Text-based web browser with image support for terminal use)
false
dillo
Dillo (A small and fast web browser with a minimalistic design)
false
elinks
Elinks (Advanced text-based web browser)
false
surf
Surf (Simple browser for X11, minimal and fast)
false
qutebrowser
Qutebrowser (A keyboard-driven, vim-like browser based on PyQt)
false
conkeror
Conkeror (Highly customizable browser with a keyboard-focused UI)

View File

@@ -1,45 +1,84 @@
false false
telegram-desktop
Telegram Desktop
false
discord
Discord (Proprietary all-in-one voice and text chat application for gamers)
false
discord_arch_electron
Discord Electron (Proprietary all-in-one voice and text chat application for gamers)
false
neochat
Neochat (Matrix client for KDE)
false
fractal
Fractal (Matrix client for GNOME)
false
element-desktop element-desktop
Element (Matrix client based on Electron) Element Desktop (All-in-one secure chat app for teams, friends, and organisations)
false false
wire-desktop discord
Wire (Modern, private messenger) Discord (Instant messaging and VoIP social platform)
false false
signal-desktop discord_arch_electron
Signal (Desktop application for Signal private messenger) Discord Electron (Popular voice + video app using the system-provided Electron for increased security and performance)
false false
jitsi-meet google-chat-linux-bin
Jitsi-Meet (Open source webconferencing) Google Chat (Unofficial electron-based desktop client for Google Chat, electron included)
false false
zoom hexchat
Zoom (Proprietary video conferencing application) Hex Chat (A GTK+ based IRC client)
false false
skypeforlinux-stable-bin jitsi-meet-desktop-bin
Skype (Proprietary application for voice and video communication) Jitsi Meet (Jitsi Meet desktop application powered by Electron)
false
teams
Microsoft Teams (Proprietary client for Microsoft Teams)
false
slack-desktop
Slack (Proprietary Slack client for desktops)
false false
mumble mumble
Mumble (Open source Teamspeak clone) Mumble (An Open Source, low-latency, high-quality voice chat software)
false false
streamlink-twitch-gui-bin neochat
Twitch GUI (GUI for Twitch livestreams) Neo Chat (A client for Matrix, the decentralized communication protocol)
false
pidgin
Pidgin (Instant messaging client supporting multiple protocols)
false
qtox
Qtox (Tox protocol client for secure, decentralized communication)
false
skypeforlinux-bin
Skype (Skype for Linux)
false
signal-desktop
Signal (Private messaging from your desktop)
false
slack-desktop
Slack (Slack Desktop Beta for Linux)
false
teams
MS Teams (Microsoft Teams for Linux is your chat-centered workspace in Office 365)
false
telegram-desktop
Telegram (Official desktop version of Telegram messaging app)
false
whatsapp-nativefier
WhatsApp (WhatsApp desktop built with Nativefier)
false
wire-desktop
Wire Desktop (End-to-end encrypted messenger with file sharing, voice calls, and video conferences)
false
zoom
Zoom (Video Conferencing and Web Conferencing Service)
false
rocket.chat
Rocket.Chat (Open-source web chat server and client for team communications)
false
mattermost-desktop
Mattermost (Open-source messaging platform for teams)
false
slack
Slack (Team communication tool for collaboration and file sharing)
false
teams-desktop
Teams (Microsoft Teams client for Linux)
false
pidgin-otr
Pidgin OTR (Off-the-record plugin for Pidgin for secure messaging)
false
xmpp-client
XMPP Client (Client for the XMPP protocol, a decentralized messaging service)
false
go-chat
Go Chat (An open-source, decentralized messaging app built with Go)
false
franz
Franz (All-in-one messaging app that supports multiple messaging services)
false
rambox
Rambox (Messaging and emailing app that combines many different services into one)
false
fleep
Fleep (Collaboration tool focused on team chat with features like file sharing)

View File

@@ -1,64 +1,72 @@
false false
vim vim
VIM (terminal text editor) VIM (Terminal text editor)
false false
visual-studio-code-bin visual-studio-code-bin
Visual Studio Code (proprietary) Visual Studio Code (Proprietary code editor)
false
code
Visual Studio Code (oss)
false false
vscodium vscodium
VSCodium (Free/Libre Open Source Software Binaries of VS Code) VSCodium (Free/Libre Open Source Software Binaries of VS Code)
false false
sublime-text-4
Sublime Text 4 (Sophisticated text editor for code, HTML, and prose)
false
emacs emacs
GNU Emacs GNU Emacs (Highly extensible and customizable text editor)
false false
qtcreator qtcreator
QtCreator QtCreator (An IDE for developing with the Qt framework)
false false
gnome-builder gnome-builder
Gnome-builder (An IDE for writing GNOME-based software) GNOME Builder (An IDE for writing GNOME-based software)
false false
hugo hugo
Hugo (A static Website Generator) Hugo (A static website generator)
false false
kdevelop kdevelop
Kdevelop (C++ IDE using KDE technologies) KDevelop (C++ IDE using KDE technologies)
false false
netbeans netbeans
Netbeans (IDE for Java, HTML5, PHP, Groovy, C and C++) NetBeans (IDE for Java, HTML5, PHP, Groovy, C, and C++)
false false
postman-bin postman-bin
Postman {API platform for building and using APIs} Postman (API platform for building and using APIs)
false false
intellij-idea-community-edition intellij-idea-community-edition
IntelliJ-IDEA (Community Edition) IntelliJ IDEA (Community Edition)
false false
pycharm-community-edition pycharm-community-edition
PyCharm (Community Edition) PyCharm (Community Edition)
false false
rider rider
IntelliJ-Rider IntelliJ Rider (IDE for .NET development)
false false
gitkraken gitkraken
Gitkraken GitKraken (Graphical Git client)
false false
github-desktop github-desktop
GitHub Desktop GitHub Desktop (GitHub's graphical Git client)
false false
cockpit cockpit-machines github-desktop-bin
Cockpit (Access some system settings at localhost:9090) GitHub Desktop Bin (GUI for managing Git and GitHub, binary version)
false
cockpit
Cockpit (Web-based interface for managing servers at localhost:9090)
false false
ansible ansible
Ansible (Simple IT automation engine) Ansible (Simple IT automation engine)
false false
docker docker-compose docker
Docker Docker (Containerization platform for running apps in isolated environments)
false false
podman-docker podman-compose crun docker-compose
Podman (Docker, usable with docker commands) Docker Compose (Tool for defining and running multi-container Docker applications)
false
podman-docker
Podman (Docker-compatible container engine)
false
podman-compose
Podman Compose (Tool to manage multi-container applications with Podman)
false false
salt salt
Salt (Central system and configuration manager) Salt (Central system and configuration manager)
@@ -70,10 +78,97 @@ puppet
Puppet (Server automation framework and application) Puppet (Server automation framework and application)
false false
prometheus prometheus
Prometheus (systems monitoring and alerting toolkit) Prometheus (Systems monitoring and alerting toolkit)
false false
vagrant vagrant
Vagrant (Build and distribute virtualized development environments) Vagrant (Build and distribute virtualized development environments)
false false
terraform terraform
Terraform (Building and updating infrastructure as code) Terraform (Building and updating infrastructure as code)
false
notepadqq
Notepadqq (Notepad++-like text editor for Linux)
false
element-desktop
Element Desktop (All-in-one secure chat app for teams, friends, and organisations)
false
discord
Discord (Instant messaging and VoIP social platform)
false
discord_arch_electron
Discord Electron (Popular voice + video app using the system-provided Electron for increased security and performance)
false
google-chat-linux-bin
Google Chat (Unofficial electron-based desktop client for Google Chat, electron included)
false
hexchat
Hex Chat (A GTK+ based IRC client)
false
jitsi-meet-desktop-bin
Jitsi Meet (Jitsi Meet desktop application powered by Electron)
false
mumble
Mumble (An Open Source, low-latency, high-quality voice chat software)
false
neochat
Neo Chat (A client for Matrix, the decentralized communication protocol)
false
pidgin
Pidgin (Instant messaging client supporting multiple protocols)
false
qtox
Qtox (Tox protocol client for secure, decentralized communication)
false
skypeforlinux-bin
Skype (Skype for Linux)
false
signal-desktop
Signal (Private messaging from your desktop)
false
slack-desktop
Slack (Slack Desktop Beta for Linux)
false
teams
MS Teams (Microsoft Teams for Linux is your chat-centered workspace in Office 365)
false
telegram-desktop
Telegram (Official desktop version of Telegram messaging app)
false
whatsapp-nativefier
WhatsApp (WhatsApp desktop built with Nativefier)
false
wire-desktop
Wire Desktop (End-to-end encrypted messenger with file sharing, voice calls, and video conferences)
false
zoom
Zoom (Video Conferencing and Web Conferencing Service)
false
rocket.chat
Rocket.Chat (Open-source web chat server and client for team communications)
false
mattermost-desktop
Mattermost (Open-source messaging platform for teams)
false
slack
Slack (Team communication tool for collaboration and file sharing)
false
teams-desktop
Teams (Microsoft Teams client for Linux)
false
pidgin-otr
Pidgin OTR (Off-the-record plugin for Pidgin for secure messaging)
false
xmpp-client
XMPP Client (Client for the XMPP protocol, a decentralized messaging service)
false
go-chat
Go Chat (An open-source, decentralized messaging app built with Go)
false
franz
Franz (All-in-one messaging app that supports multiple messaging services)
false
rambox
Rambox (Messaging and emailing app that combines many different services into one app)
false
fleep
Fleep (Collaboration tool focused on team chat with features like file sharing)

View File

@@ -1 +1,105 @@
false
geogebra
GeoGebra (Mathematics software for learning and teaching)
false
gnuplot
Gnuplot (Plotting and data visualization)
false
octave
GNU Octave (High-level language for numerical computations)
false
jupyter-notebook
Jupyter Notebook (Web-based interactive computing environment)
false
scilab
Scilab (Open-source software for numerical computation)
false
latex
LaTeX (Document preparation system for high-quality typesetting)
false
texlive
TeX Live (TeX distribution for typesetting)
false
mathjax
MathJax (Open-source JavaScript display engine for LaTeX and MathML)
false
anki
Anki (Flashcards for spaced repetition learning)
false
edx
EdX (Open-source platform for online courses)
false
moodle
Moodle (Open-source learning platform)
false
tuxmath
TuxMath (Math game for children)
false
tuxpaint
TuxPaint (Drawing program for young children)
false
gcompris
GCompris (Educational software suite for children)
false
scratch
Scratch (Programming language and environment for kids)
false
kdeedu
KDE Educational Suite (Software tools for education)
false
kalzium
Kalzium (Interactive periodic table for chemistry education)
false
kgeography
KGeography (Geography learning tool)
false
klavaro
Klavaro (Touch typing tutor)
false
bc
bc (Command-line calculator language)
false
evince
Evince (Document viewer for PDF, PostScript, etc.)
false
okular
Okular (Universal document viewer by KDE)
false
libreoffice-math
LibreOffice Math (Equation editor for LibreOffice)
false
gimp
GIMP (Image editor for educational use in art and design)
false
inkscape
Inkscape (Vector graphics editor for design and education)
false
stellarium
Stellarium (Planetarium software for astronomy education)
false
celestia
Celestia (3D space simulation for educational purposes)
false
sagemath
SageMath (Mathematics software for education and research)
false
chemtool
ChemTool (Chemical structure drawing software)
false
kstars
KStars (Astronomy software)
false
libreoffice-impress
LibreOffice Impress (Presentation software for educational slides)
false
raspberrypi-imager
Raspberry Pi Imager (Raspberry Pi OS installation tool)
false
scratch2
Scratch 2 (Programming for children)
false
breezebrowser
BreezeBrowser (Educational tool for classroom presentation)
false
gparted
GParted (Partitioning tool, useful for educational purposes in computing)

View File

@@ -1,39 +0,0 @@
false
aisleriot
Aisleriot (Collection of card games)
false
mari0
Mari0 (Mario game clone)
false
kapman
Kapman (Pacman game clone)
false
knights
Knights (Chess game)
false
kmahjongg
Kmahjongg (Mahjongg game)
false
supertuxkart
Super Tux Kart (Kart racing game)
false
supertux
Super Tux (A classic 2D jump'n'run sidescroller game)
false
extremetuxracer
Extreme Tux Racer (Downhill racing game starring Tux)
false
minetest minetest-server
Minetest (Opensource bloack building game)
false
0ad
0ad (Realtime strategy game)
false
teeworlds
Teeworlds (Multiplayer 2D shooter game)
false
xonotic
Xonotic (First person shooter game)
false
hedgewars
Hedgewars (Turn based artillery game)

View File

@@ -1,7 +1,13 @@
false false
krita krita-plugin-gmic opencolorio krita
Krita (Paint application by KDE) Krita (Paint application by KDE)
false false
krita-plugin-gmic
Krita Plugin GMIC (Plugin for Krita)
false
opencolorio
OpenColorIO (Color management framework)
false
gimp gimp
GIMP (Advanced image manipulation program) GIMP (Advanced image manipulation program)
false false
@@ -27,31 +33,31 @@ mypaint
MyPaint (Digital painting) MyPaint (Digital painting)
false false
wings3d wings3d
wings3d (Advanced subdivision modeler that is both powerful and easy to use) Wings3D (Advanced subdivision modeler that is both powerful and easy to use)
false false
sweethome3d sweethome3d
sweethome3d (Interior design software application for the development of floor plans) Sweet Home 3D (Interior design software application for the development of floor plans)
false false
freecad freecad
freecad (Parametric 3D CAD modeler based on OpenCascade) FreeCAD (Parametric 3D CAD modeler based on OpenCascade)
false false
librecad librecad
librecad (A 2D CAD application based on Qt5. Forked from QCAD Community Edition) LibreCAD (A 2D CAD application based on Qt5. Forked from QCAD Community Edition)
false false
kicad kicad
kicad (Software suite for electronic design automation (EDA)) KiCad (Software suite for electronic design automation (EDA))
false false
pencil2d pencil2d
Pencil 2D (2D handdrawn animations) Pencil 2D (2D hand-drawn animations)
false false
synfigstudio synfigstudio
Synfig Studio (2D vector animation) Synfig Studio (2D vector animation)
false false
opentoonz opentoonz
opentoonz (2D animation creation software) OpenToonz (2D animation creation software)
false false
fontforge fontforge
FontForge (Outline and font editor) FontForge (Outline and font editor)
false false
birdfont birdfont
Birdfont (Font editor for creating TTF, EOT and SVG fonts) Birdfont (Font editor for creating TTF, EOT, and SVG fonts)

View File

@@ -2,26 +2,32 @@ false
asian-fonts asian-fonts
Asian Fonts Support Asian Fonts Support
false false
fcitx5-input-support fcitx5-configtool fcitx5-m17n fcitx5-input-support
Devanagari,Kannada,Telgu,Tamil,Malyalam,Bangala etc and many others (fcitx5-m17n) Fcitx5 Input Support
false false
fcitx5-input-support fcitx5-configtool fcitx5-chinese-addons fcitx5-configtool
Fcitx5 Config Tool
false
fcitx5-m17n
Devanagari, Kannada, Telugu, Tamil, Malayalam, Bengali, and many others (fcitx5-m17n)
false
fcitx5-chinese-addons
Simplified Chinese (fcitx5-chinese-addons) Simplified Chinese (fcitx5-chinese-addons)
false false
fcitx5-input-support fcitx5-configtool fcitx5-rime fcitx5-rime
Traditional Chinese (fcitx5-rime) Traditional Chinese (fcitx5-rime)
false false
fcitx5-input-support fcitx5-configtool fcitx5-mozc fcitx5-mozc
Japanese (fcitx5-mozc) Japanese (fcitx5-mozc)
false false
fcitx5-input-support fcitx5-configtool fcitx5-hangul fcitx5-hangul
Korean (fcitx5-hangul) Korean (fcitx5-hangul)
false false
fcitx5-input-support fcitx5-configtool fcitx5-unikey fcitx5-unikey
Vietnamese (fcitx5-unikey) Vietnamese (fcitx5-unikey)
false false
fcitx5-input-support fcitx5-configtool fcitx5-sayura fcitx5-sayura
Sinhalese (fcitx5-sayura) Sinhalese (fcitx5-sayura)
false false
fcitx5-input-support fcitx5-configtool fcitx5-libthai fcitx5-libthai
Thai (fcitx5-libthai) Thai (fcitx5-libthai)

View File

@@ -51,7 +51,7 @@ insync-nemo
Insync Nemo Plugin (Nemo integration for insync) Insync Nemo Plugin (Nemo integration for insync)
false false
nextcloud-client nextcloud-client
Next Cloud (Nextloud client for linux) Next Cloud (Nextcloud client for linux)
false false
megasync-bin megasync-bin
Mega Sync (Official MEGA desktop application for syncing with MEGA Cloud Drive) Mega Sync (Official MEGA desktop application for syncing with MEGA Cloud Drive)

View File

@@ -1,24 +0,0 @@
false
linux-lts linux-lts-headers
Linux LTS (Failsafe option)
false
linux-hardened linux-hardened-headers
Linux Hardened (Improved security)
false
linux-cachyos-bore linux-cachyos-bore-headers
Linux BORE (May improve performance on some systems)
false
linux-xanmod linux-xanmod-headers
Linux Xanmod (May also improve performance on some systems)
false
linux-mainline linux-mainline-headers
Linux Mainline (Newest commits, might help with very new hardware)
false
linux-amd-znver2 linux-amd-znver2-headers
Linux AMD Zen2 (Patched for AMD Zen2 architecture)
false
linux-amd-znver3 linux-amd-znver3-headers
Linux AMD Zen3 (Patched for AMD Zen3 architecture)
false
linux-amd linux-amd-headers
Linux AMD Zen4 (Mainline patched for AMD Zen4 architecture)

View File

@@ -6,7 +6,7 @@ kmail
Kmail (KDE mail client) Kmail (KDE mail client)
false false
evolution evolution
evolution (Mature and feature-rich e-mail client that is part of the GNOME project) Evolution (Mature and feature-rich e-mail client that is part of the GNOME project)
false false
geary geary
Geary (GNOME mail client) Geary (GNOME mail client)
@@ -21,7 +21,7 @@ claws-mail
Claws-mail (Lightweight GTK based mail client) Claws-mail (Lightweight GTK based mail client)
false false
sylpheed sylpheed
Slypheed (Lightweight and user-friendly GTK email client) Sylpheed (Lightweight and user-friendly GTK email client)
false false
seamonkey seamonkey
Seamonkey (Email client included in the SeaMonkey suite) Seamonkey (Email client included in the SeaMonkey suite)

View File

@@ -25,7 +25,7 @@ Calligra Suite by KDE
false false
obsidian obsidian
Obsidian Obsidian
flase false
skrooge skrooge
Skrooge (A personal finances manager for KDE) Skrooge (A personal finances manager for KDE)
false false

View File

@@ -16,3 +16,9 @@ Conky (System monitor)
false false
keepassxc keepassxc
KeePassXC (Cross-platform Password Manager) KeePassXC (Cross-platform Password Manager)
false
enpass-bin
Enpass
false
lastpass
LastPass

View File

@@ -0,0 +1,42 @@
false
remmina
Remmina (Remote access client)
false
xrdp
xrdp (Remote Desktop Protocol (RDP) server)
false
vnc-server
VNC Server (Virtual Network Computing server)
false
tightvnc
TightVNC (Remote desktop control software)
false
tigervnc
TigerVNC (VNC server and client)
false
nomachine
NoMachine (Remote desktop solution)
false
ssh
OpenSSH (OpenSSH server and client for secure remote login)
false
teamviewer
TeamViewer (Remote control software)
false
mremoteng
mRemoteNG (Multi-protocol remote connection manager)
false
guacamole
Guacamole (Clientless remote desktop gateway)
false
sftp
SFTP (Secure file transfer program)
false
meshcentral
MeshCentral (Remote management of devices)
false
anydesk
AnyDesk (Remote desktop software)
false
chromoting
Chromoting (Remote desktop access using Chrome)

View File

@@ -18,7 +18,7 @@ vlc
VLC (Media player) VLC (Media player)
false false
smplayer smplayer-skins smplayer-themes smplayer smplayer-skins smplayer-themes
SMPlayer (Build-in codecs, high compatability video player) SMPlayer (Build-in codecs, high compatibility video player)
false false
baka-mplayer baka-mplayer
Baka-Mplayer (Libmpv and Qt based video player) Baka-Mplayer (Libmpv and Qt based video player)

View File

@@ -10,3 +10,6 @@ Virt-manager (More advanced KVM interface)
false false
genymotion virtualbox-meta genymotion virtualbox-meta
Genymotion (Provides a virtual environment for Android using Virtualbox) Genymotion (Provides a virtual environment for Android using Virtualbox)
false
qemu-base
Qemu

View File

@@ -1,11 +1,23 @@
#!/usr/bin/env xdg-open
[Desktop Entry] [Desktop Entry]
Name=Snigdha OS Assistant Name=Snigdha OS Assistant
Comment=Tool for setting up Snigdha OS Comment=Tool for setting up and managing Snigdha OS
Encoding=UTF-8
Exec=snigdhaos-assistant Exec=snigdhaos-assistant
Terminal=false Terminal=false
Type=Application Type=Application
Icon=snigdhaos-assistant Icon=snigdhaos-assistant
Categories=System;SnigdhaOS-Setup; Categories=System;Settings;SnigdhaOS-Setup;Utility;
NoDisplay=false NoDisplay=false
StartupWMClass=SnigdhaOS-Assistant
MimeType=text/plain;application/x-shellscript;
Comment=Setup and configure Snigdha OS with ease
Actions=Setup;Install;
[Desktop Action Setup]
Name=Run Setup Wizard
Exec=snigdhaos-assistant setup
Icon=preferences-system
[Desktop Action Install]
Name=Install Snigdha OS
Exec=snigdhaos-assistant install
Icon=package-install