Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/belanasaikiran/file-system-management

A group project at UCONN::CSE 5304
https://github.com/belanasaikiran/file-system-management

filesys imgui operating-systems os

Last synced: about 1 month ago
JSON representation

A group project at UCONN::CSE 5304

Awesome Lists containing this project

README

        

# File-System-Management

This project implements a file system GUI using Dear ImGui, a graphical interface library. It enables users to perform file system operations including file and directory management, disk usage monitoring, and file modification.

Implemented in C++ with OpenGL for rendering

> OS-GroupProject

### Implemented Functions

| **Operation** | **Function** |
|---------------------------|-----------------------------------------------------------------------------|
| Create Directory | `create_directory(dirName)` |
| Delete Directory | `delete_directory(dirName)` |
| Create File | `create_file(fileName)` |
| Delete File | `delete_file(fileName)` |
| Write to File | `write_to_file(fileName, fileContent.c_str())` |
| Read File | `read_file(fileName)` |
| Get File Info | `get_file_info(filePath)` |
| List Directory Contents | `list_directory_contents(filePath)` |
| Rename File/Directory | `rename_file_or_directory(oldName, newName)` |
| Move File/Directory | `move_file_or_directory(moveCopySource, moveCopyDestination)` |
| Copy File | `copy_file(moveCopySource, moveCopyDestination)` |
| Change File Permissions | `change_permissions(fileName, parsedPermissions)` |
| Get Disk Usage | `get_disk_usage(".")` |

### Steps to Build and Run the program.

0. Install the necessary libraries

```bash
sudo apt update
sudo apt install gcc pkg-config g++ build-essential libglfw3-dev libgl1-mesa-dev libx11-dev libxrandr-dev libxi-dev libxxf86vm-dev libxcursor-dev cmake

1. Firstly, clone the ImGUI git repository into this project directory. We use the docking branch since it provides option to resize the windows according to our wish

```bash
git clone --recursive https://github.com/ocornut/imgui -b docking
```
> NOTE: the `imgui` folder should be at ROOT i.e., one dir behind AllinOne or file_system_gui folder.

2. go to `file_system_gui` directory, and run the make command.

```bash
cd file_system_gui
make
```

> NOTE: Make sure, the make file IMGUI directory is pointed to the directory you cloned in step 1

3. Run the GUI interface:

```bash
./file_Sys_gui
```

### Diretory Structure for this project:

```bash
.
├── FileSys_GUI
├── imgui
├── Output_ScreenShots
└── README.md
```

### Test Screenshots:

![image 1](./images/final_UI.png)

![image 2](./images/final_exec.png)