StudyOS is a lightweight, educational operating system designed to demonstrate fundamental OS concepts while providing practical productivity tools for students. Built using a combination of Bash scripting and C programming, StudyOS showcases:
- Process Management: Inter-process communication and threading
- Memory Management: Shared memory implementation
- System Programming: Low-level C programming with system calls
- User Interface: Terminal-based applications with ncurses
- Audio Processing: Sound management and playback systems
Perfect for computer science students learning operating systems concepts and anyone looking for a minimalist productivity environment.
- Three carefully selected ambient sounds: Rain, Campfire, and Ocean Waves
- Loop functionality for continuous playback
- Process management for audio control
- Interactive dialog-based interface
- Visual ncurses-based interface
- Customizable work and break intervals
- Session tracking and notifications
- Keyboard controls for easy navigation
- Accurate Grade Point Average calculations
- Parallel computation using child processes
- Shared memory for efficient data handling
- Support for multiple grading systems
- Complete academic workflow management
- Course creation and tracking
- Assignment submission system
- Persistent data storage with log files
- Multi-threaded operations for performance
-
Clone the repository
git clone https://github.com/hamdiitarek/StudyOS.git cd StudyOS
-
Run the installation script
chmod +x install.sh sudo ./install.sh
-
Start StudyOS
StudyOS
If you prefer to install dependencies manually:
-
Install dependencies (Ubuntu/Debian):
sudo apt update sudo apt install gcc libncurses5-dev dialog alsa-utils make
-
Install dependencies (CentOS/RHEL):
sudo yum install gcc ncurses-devel dialog alsa-utils make
-
Compile the C programs
gcc -o pomodoro pomodoro.c -lncurses gcc -o gpa_calculator gpa_calculator.c gcc -o audio_processor audio_processor.c -lpthread gcc -o assignment_courses assignment_courses.c -lpthread
-
Make scripts executable
chmod +x *.sh
After installation, verify StudyOS is working:
StudyOS --version
Launch StudyOS from your terminal:
StudyOS
▗▄▄▖▗▄▄▄▖▗▖ ▗▖▗▄▄▄▗▖ ▗▖▗▄▖ ▗▄▄▖
▐▌ █ ▐▌ ▐▌▐▌ █▝▚▞▘▐▌ ▐▌▐▌
▝▀▚▖ █ ▐▌ ▐▌▐▌ █ ▐▌ ▐▌ ▐▌ ▝▀▚▖
▗▄▄▞▘ █ ▝▚▄▞▘▐▙▄▄▀ ▐▌ ▝▚▄▞▘▗▄▄▞▘
1) Sound Player
2) Pomodoro Timer
3) GPA Calculator
4) Course Manager
5) System Information
6) Exit
Feature | Command | Description |
---|---|---|
Sound Player | Select option 1 | Play ambient sounds for focus |
Pomodoro Timer | Select option 2 | Time management tool |
GPA Calculator | Select option 3 | Calculate academic performance |
Course Manager | Select option 4 | Manage courses and assignments |
System Info | Select option 5 | Display system information |
- Pomodoro Timer: Press
q
to quit current session - Sound Player: Use dialog navigation (Tab, Enter, Esc)
- Main Menu: Use number keys to select options
- Purpose: Automated installation and setup
- Features:
- Dependency management and installation
- Binary compilation with error handling
- Directory structure creation
- Permission configuration
- System compatibility checks
- Purpose: Main system entry point and menu controller
- Features:
- ASCII art logo display
- Interactive menu system
- Process management for background tasks
- System information display
- Graceful exit handling
- Purpose: Ambient sound management system
- Features:
- Three ambient sound options (Rain, Campfire, Waves)
- Loop playback functionality
- Dialog-based user interface
- Process control and cleanup
- Audio format support (.wav files)
- Purpose: Simple task management utility
- Features:
- Task creation and deletion
- Persistent storage
- Command-line interface
- Purpose: Productivity timer application
- Technical Details:
- Built with
ncurses
library for terminal UI - Real-time countdown display
- Session management
- User input handling
- Visual progress indicators
- Built with
- Purpose: Academic performance calculator
- Technical Details:
- Shared memory implementation using
shm_open()
- Multi-process architecture with
fork()
- Inter-process communication
- Grade validation and error handling
- Multiple GPA scales support
- Shared memory implementation using
- Purpose: Audio playback engine
- Technical Details:
- POSIX threading (
pthread
) for concurrent playback - Process synchronization
- Audio stream management
- Error handling and recovery
- Memory management for audio buffers
- POSIX threading (
- Purpose: Academic workflow management
- Technical Details:
- Shared memory for data persistence
- Multi-threading for concurrent operations
- File I/O for log management
- Data structures for course/assignment tracking
- Thread synchronization with mutexes
StudyOS/
├── sounds/ # Audio files directory
│ ├── rain.wav # Rain ambient sound
│ ├── campfire.wav # Campfire ambient sound
│ └── waves.wav # Ocean waves ambient sound
├── install.sh # Installation script
├── main2.sh # Main system launcher
├── sound_player.sh # Sound management
├── todo.sh # Task management
├── pomodoro.c # Pomodoro timer source
├── gpa_calculator.c # GPA calculator source
├── audio_processor.c # Audio engine source
├── assignment_courses.c # Course manager source
└── README.md # This documentation
StudyOS welcome screen with system information and main menu
Ambient sound selection dialog with three calming options
Course creation and management interface
Course listing and details view
Assignment creation and tracking system
Assignment details and submission interface
Grade input interface for GPA calculation
GPA calculation results and analysis
Visual timer interface with countdown display
This was a collaborative project for an Operating Systems course done by:
- Hamdi Awad
- Omar Walid
- Omar Abdelrady