Electron অ্যাপ্লিকেশনগুলি একক কোডবেস ব্যবহার করে Windows, macOS, এবং Linux-এ চলে, কিন্তু কখনও কখনও আপনাকে বিভিন্ন প্ল্যাটফর্মের জন্য কিছু প্ল্যাটফর্ম-নির্ভর বৈশিষ্ট্য বা কনফিগারেশন ব্যবহার করতে হতে পারে। Electron এর মাধ্যমে আপনি অ্যাপ্লিকেশনের প্ল্যাটফর্ম-নির্ভর বৈশিষ্ট্য ব্যবস্থাপনা করতে পারেন, যেমন বিভিন্ন অপারেটিং সিস্টেমের জন্য নির্দিষ্ট ফিচার চালানো বা কিছু কাস্টমাইজেশন করা।
এখানে, Electron অ্যাপ্লিকেশনের মাধ্যমে প্ল্যাটফর্ম-নির্ভর বৈশিষ্ট্য ব্যবস্থাপনা করার বিভিন্ন পদ্ধতি আলোচনা করা হবে।
১. প্ল্যাটফর্ম চেক করা
Electron এ, আপনি সহজেই কোডের মধ্যে প্ল্যাটফর্ম চেক করতে পারেন এবং তারপরে নির্দিষ্ট প্ল্যাটফর্মের জন্য কাস্টম বৈশিষ্ট্য বা কার্যক্রম চালাতে পারেন। এর জন্য process.platform ব্যবহার করা হয়, যা বর্তমানে চলমান অপারেটিং সিস্টেমের নাম প্রদান করে।
process.platform এর মান:
- 'win32': Windows
- 'darwin': macOS
- 'linux': Linux
উদাহরণ: প্ল্যাটফর্ম চেক করা
const { app } = require('electron');
app.on('ready', () => {
const platform = process.platform;
if (platform === 'win32') {
console.log('Windows প্ল্যাটফর্মে আছো');
// Windows এর জন্য বিশেষ কোনো কোড
} else if (platform === 'darwin') {
console.log('macOS প্ল্যাটফর্মে আছো');
// macOS এর জন্য বিশেষ কোনো কোড
} else if (platform === 'linux') {
console.log('Linux প্ল্যাটফর্মে আছো');
// Linux এর জন্য বিশেষ কোনো কোড
}
});
এখানে, process.platform দিয়ে আমরা চেক করছি কোন প্ল্যাটফর্মে অ্যাপ চলছে এবং সেই অনুযায়ী কাজ করছি।
২. প্ল্যাটফর্ম নির্ভর মেনু তৈরি
Electron এ মেনু কাস্টমাইজ করতে, আপনি প্ল্যাটফর্ম-নির্ভর মেনু তৈরি করতে পারেন। যেমন, Windows এবং Linux এর জন্য একই ধরনের মেনু থাকবে, কিন্তু macOS এর জন্য আলাদা মেনু থাকতে পারে, যেখানে macOS-এর জন্য কাস্টম মেনু তৈরি করা হয়।
উদাহরণ: প্ল্যাটফর্ম নির্ভর মেনু তৈরি
const { app, BrowserWindow, Menu } = require('electron');
let mainWindow;
app.on('ready', () => {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
},
});
mainWindow.loadFile('index.html');
const platform = process.platform;
const menuTemplate = [
{
label: 'File',
submenu: [
{ label: 'New File' },
{ label: 'Open File' },
{ type: 'separator' },
{ label: 'Exit', click: () => app.quit() },
],
},
];
if (platform === 'darwin') {
// macOS এর জন্য কাস্টম মেনু
menuTemplate.unshift({
label: app.name,
submenu: [
{ label: 'About', role: 'about' },
{ type: 'separator' },
{ label: 'Quit', role: 'quit' },
],
});
}
const menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);
});
এখানে, আমরা macOS প্ল্যাটফর্মে আলাদা মেনু তৈরি করছি, যেখানে "About" এবং "Quit" মেনু আইটেমগুলি আলাদা ভাবে রাখা হয়েছে।
৩. প্ল্যাটফর্ম নির্ভর ফাইল পাথ
প্ল্যাটফর্ম অনুযায়ী ফাইল পাথ কনফিগারেশন পরিবর্তন করতে হয়, কারণ Windows, macOS, এবং Linux এর ফাইল সিস্টেম পাথ আলাদা। Electron এ path মডিউল ব্যবহার করে প্ল্যাটফর্ম নির্ভর পাথ কনফিগারেশন করা যায়।
উদাহরণ: প্ল্যাটফর্ম নির্ভর ফাইল পাথ
const path = require('path');
let appDataPath;
if (process.platform === 'win32') {
appDataPath = path.join(process.env.APPDATA, 'MyElectronApp');
} else if (process.platform === 'darwin') {
appDataPath = path.join(process.env.HOME, 'Library', 'Application Support', 'MyElectronApp');
} else if (process.platform === 'linux') {
appDataPath = path.join(process.env.HOME, '.config', 'MyElectronApp');
}
console.log('App Data Path:', appDataPath);
এখানে, path.join() ব্যবহার করে বিভিন্ন প্ল্যাটফর্মে অ্যাপ্লিকেশন ডেটা সংরক্ষণের জন্য পাথ তৈরি করা হয়েছে।
৪. প্ল্যাটফর্ম নির্ভর ডিফল্ট আচরণ
কিছু প্ল্যাটফর্মে অ্যাপের আচরণ আলাদা হতে পারে, যেমন উইন্ডো সাইজ, কাস্টম শিরোনাম বার, ফোল্ডার পছন্দ ইত্যাদি। Electron ব্যবহারকারীর প্ল্যাটফর্ম অনুযায়ী এই ডিফল্ট আচরণ পরিবর্তন করতে সাহায্য করে।
উদাহরণ: প্ল্যাটফর্ম নির্ভর উইন্ডো সাইজ
const { app, BrowserWindow } = require('electron');
let mainWindow;
app.on('ready', () => {
const platform = process.platform;
let width = 800;
let height = 600;
if (platform === 'win32') {
width = 900; // Windows প্ল্যাটফর্মে উইন্ডোর আকার বড় হবে
} else if (platform === 'darwin') {
height = 700; // macOS প্ল্যাটফর্মে উইন্ডোর উচ্চতা বেশি হবে
}
mainWindow = new BrowserWindow({
width: width,
height: height,
webPreferences: {
nodeIntegration: true,
},
});
mainWindow.loadFile('index.html');
});
এখানে, আমরা Windows এবং macOS প্ল্যাটফর্মের জন্য উইন্ডোর আকার কাস্টমাইজ করেছি।
৫. প্ল্যাটফর্ম নির্ভর সফটওয়্যার ফিচার
Electron এর মাধ্যমে আপনি প্রতিটি প্ল্যাটফর্মের জন্য নির্দিষ্ট ফিচার সক্রিয় বা নিষ্ক্রিয় করতে পারেন, যেমন macOS-এ Touch Bar, Windows-এ Tray Icon ইত্যাদি।
উদাহরণ: Tray Icon কাস্টমাইজেশন (Windows এবং Linux)
const { app, Tray, Menu } = require('electron');
const path = require('path');
let tray;
app.whenReady().then(() => {
const trayIcon = path.join(__dirname, 'tray-icon.png');
tray = new Tray(trayIcon);
const contextMenu = Menu.buildFromTemplate([
{ label: 'Open App', click: () => { console.log('App opened'); } },
{ label: 'Quit', click: () => app.quit() }
]);
tray.setContextMenu(contextMenu);
});
এখানে Tray Icon তৈরি করা হয়েছে যা Windows এবং Linux প্ল্যাটফর্মে চলে, তবে macOS-এ এটি কার্যকরী নয়।
সারাংশ
process.platformব্যবহার করে আপনি সহজেই প্ল্যাটফর্ম চেক করতে পারেন এবং সেই অনুযায়ী কাস্টম কোড চালাতে পারেন।- Electron-এ Menu এবং Context Menu কাস্টমাইজ করা যায় প্ল্যাটফর্ম অনুযায়ী।
- Path মডিউল এবং process.platform এর মাধ্যমে প্ল্যাটফর্ম নির্ভর ডিরেক্টরি এবং ফাইল পাথ কনফিগার করা যায়।
- প্ল্যাটফর্ম অনুযায়ী অ্যাপের উইন্ডো আকার, কাস্টম শিরোনাম, এবং অন্যান্য আচরণ কাস্টমাইজ করা সম্ভব।
এইসব বৈশিষ্ট্য ব্যবহারের মাধ্যমে আপনি Electron অ্যাপ্লিকেশনে প্ল্যাটফর্ম-নির্ভর বৈশিষ্ট্য সমন্বয় করতে পারবেন।
Read more