Restyled notifications and added a close button.
This commit is contained in:
@@ -1,174 +1,145 @@
|
||||
export const substitutes = {
|
||||
"transmission-gtk": "transmission",
|
||||
"blueberry.py": "blueberry",
|
||||
"Caprine": "facebook-messenger",
|
||||
"com.raggesilver.BlackBox-symbolic": "terminal-symbolic",
|
||||
"org.wezfurlong.wezterm-symbolic": "terminal-symbolic",
|
||||
"audio-headset-bluetooth": "audio-headphones-symbolic",
|
||||
"audio-card-analog-usb": "audio-speakers-symbolic",
|
||||
"audio-card-analog-pci": "audio-card-symbolic",
|
||||
"preferences-system": "emblem-system-symbolic",
|
||||
"com.github.Aylur.ags-symbolic": "controls-symbolic",
|
||||
"com.github.Aylur.ags": "controls-symbolic",
|
||||
}
|
||||
|
||||
export default {
|
||||
settings: "emblem-system-symbolic",
|
||||
tick: "object-select-symbolic",
|
||||
audio: {
|
||||
mic: {
|
||||
muted: "microphone-sensitivity-muted-symbolic",
|
||||
unmuted: "audio-input-microphone-symbolic",
|
||||
low: "microphone-sensitivity-low-symbolic",
|
||||
medium: "microphone-sensitivity-medium-symbolic",
|
||||
high: "microphone-sensitivity-high-symbolic",
|
||||
missing: "image-missing-symbolic",
|
||||
nix: {
|
||||
nix: "nix-snowflake-symbolic",
|
||||
},
|
||||
volume: {
|
||||
muted: "audio-volume-muted-symbolic",
|
||||
low: "audio-volume-low-symbolic",
|
||||
medium: "audio-volume-medium-symbolic",
|
||||
high: "audio-volume-high-symbolic",
|
||||
overamplified: "audio-volume-overamplified-symbolic",
|
||||
app: {
|
||||
terminal: "terminal-symbolic",
|
||||
},
|
||||
type: {
|
||||
headset: "audio-headphones-symbolic",
|
||||
speaker: "audio-speakers-symbolic",
|
||||
card: "audio-card-symbolic",
|
||||
fallback: {
|
||||
executable: "application-x-executable",
|
||||
notification: "dialog-information-symbolic",
|
||||
video: "video-x-generic-symbolic",
|
||||
audio: "audio-x-generic-symbolic",
|
||||
},
|
||||
mixer: "view-list-symbolic",
|
||||
},
|
||||
apps: {
|
||||
apps: "view-app-grid-symbolic",
|
||||
search: "folder-saved-search-symbolic",
|
||||
},
|
||||
launcher: {
|
||||
search: "system-search-symbolic",
|
||||
utility: "applications-utilities-symbolic",
|
||||
system: "emblem-system-symbolic",
|
||||
education: "applications-science-symbolic",
|
||||
development: "applications-engineering-symbolic",
|
||||
network: "network-wired-symbolic",
|
||||
office: "x-office-document-symbolic",
|
||||
game: "applications-games-symbolic",
|
||||
multimedia: "applications-multimedia-symbolic",
|
||||
hyprland: "hyprland-symbolic",
|
||||
firefox: "firefox-symbolic"
|
||||
},
|
||||
quicksettings: {
|
||||
notifications: "user-available-symbolic",
|
||||
wifi: "network-wireless-symbolic",
|
||||
bluetooth: "bluetooth-active-symbolic",
|
||||
audio: "audio-volume-high-symbolic",
|
||||
mpris: "audio-x-generic-symbolic",
|
||||
chatgpt: "chatgpt-symbolic"
|
||||
},
|
||||
bluetooth: {
|
||||
enabled: "bluetooth-active-symbolic",
|
||||
disabled: "bluetooth-disabled-symbolic",
|
||||
},
|
||||
brightness: {
|
||||
indicator: "display-brightness-symbolic",
|
||||
keyboard: "keyboard-brightness-symbolic",
|
||||
screen: ["", "", "", "", "", "", "", "", "", "", ""],
|
||||
},
|
||||
powermenu: {
|
||||
sleep: "weather-clear-night-symbolic",
|
||||
reboot: "system-reboot-symbolic",
|
||||
logout: "system-log-out-symbolic",
|
||||
shutdown: "system-shutdown-symbolic",
|
||||
lock: "system-lock-screen-symbolic",
|
||||
close: "window-close-symbolic"
|
||||
},
|
||||
recorder: {
|
||||
recording: "media-record-symbolic",
|
||||
},
|
||||
notifications: {
|
||||
noisy: "user-available-symbolic",
|
||||
silent: "notifications-disabled-symbolic",
|
||||
critical: "messagebox_critical-symbolic",
|
||||
chat: "user-available-symbolic",
|
||||
close: "window-close-symbolic"
|
||||
},
|
||||
header: {
|
||||
refresh: "view-refresh-symbolic",
|
||||
settings: "emblem-system-symbolic",
|
||||
power: "system-shutdown-symbolic",
|
||||
},
|
||||
trash: {
|
||||
full: "user-trash-full-symbolic",
|
||||
empty: "user-trash-symbolic",
|
||||
},
|
||||
mpris: {
|
||||
fallback: "audio-x-generic-symbolic",
|
||||
shuffle: {
|
||||
enabled: "media-playlist-shuffle-symbolic",
|
||||
disabled: "media-playlist-no-shuffle-symbolic",
|
||||
ui: {
|
||||
close: "window-close-symbolic",
|
||||
colorpicker: "color-select-symbolic",
|
||||
info: "info-symbolic",
|
||||
link: "external-link-symbolic",
|
||||
lock: "system-lock-screen-symbolic",
|
||||
menu: "open-menu-symbolic",
|
||||
refresh: "view-refresh-symbolic",
|
||||
search: "system-search-symbolic",
|
||||
settings: "emblem-system-symbolic",
|
||||
themes: "preferences-desktop-theme-symbolic",
|
||||
tick: "object-select-symbolic",
|
||||
time: "hourglass-symbolic",
|
||||
toolbars: "toolbars-symbolic",
|
||||
warning: "dialog-warning-symbolic",
|
||||
avatar: "avatar-default-symbolic",
|
||||
arrow: {
|
||||
right: "pan-end-symbolic",
|
||||
left: "pan-start-symbolic",
|
||||
down: "pan-down-symbolic",
|
||||
up: "pan-up-symbolic",
|
||||
},
|
||||
},
|
||||
loop: {
|
||||
none: "media-playlist-no-repeat-symbolic",
|
||||
track: "media-playlist-repeat-song-symbolic",
|
||||
playlist: "media-playlist-repeat-symbolic",
|
||||
audio: {
|
||||
mic: {
|
||||
muted: "microphone-disabled-symbolic",
|
||||
low: "microphone-sensitivity-low-symbolic",
|
||||
medium: "microphone-sensitivity-medium-symbolic",
|
||||
high: "microphone-sensitivity-high-symbolic",
|
||||
},
|
||||
volume: {
|
||||
muted: "audio-volume-muted-symbolic",
|
||||
low: "audio-volume-low-symbolic",
|
||||
medium: "audio-volume-medium-symbolic",
|
||||
high: "audio-volume-high-symbolic",
|
||||
overamplified: "audio-volume-overamplified-symbolic",
|
||||
},
|
||||
type: {
|
||||
headset: "audio-headphones-symbolic",
|
||||
speaker: "audio-speakers-symbolic",
|
||||
card: "audio-card-symbolic",
|
||||
},
|
||||
mixer: "mixer-symbolic",
|
||||
},
|
||||
playing: "media-playback-pause-symbolic",
|
||||
paused: "media-playback-start-symbolic",
|
||||
stopped: "media-playback-stop-symbolic",
|
||||
prev: "media-skip-backward-symbolic",
|
||||
next: "media-skip-forward-symbolic",
|
||||
},
|
||||
ai: "chatgpt-symbolic",
|
||||
ui: {
|
||||
send: "mail-send-symbolic",
|
||||
arrow: {
|
||||
right: "pan-end-symbolic",
|
||||
left: "pan-start-symbolic",
|
||||
down: "pan-down-symbolic",
|
||||
up: "pan-up-symbolic",
|
||||
powerprofile: {
|
||||
balanced: "power-profile-balanced-symbolic",
|
||||
"power-saver": "power-profile-power-saver-symbolic",
|
||||
performance: "power-profile-performance-symbolic",
|
||||
},
|
||||
},
|
||||
weather: {
|
||||
day: {
|
||||
"113": "\uf00d", //"Sunny",
|
||||
"116": "\uf002", //"PartlyCloudy",
|
||||
"119": "\uf041", //"Cloudy",
|
||||
"122": "\uf013", //"VeryCloudy",
|
||||
"143": "\uf003", //"Fog",
|
||||
"176": "\uf01a", //"LightShowers",
|
||||
"179": "\uf017", //"LightSleetShowers",
|
||||
"182": "\uf0b5", //"LightSleet",
|
||||
"185": "\uf0b5", //"LightSleet",
|
||||
"200": "\uf01d", //"ThunderyShowers",
|
||||
"227": "\uf01b", //"LightSnow",
|
||||
"230": "\uf01b", //"HeavySnow",
|
||||
"248": "\uf014", //"Fog",
|
||||
"260": "\uf014", //"Fog",
|
||||
"263": "\uf01a", //"LightShowers",
|
||||
"266": "\uf01a", //"LightRain",
|
||||
"281": "\uf0b5", //"LightSleet",
|
||||
"284": "\uf0b5", //"LightSleet",
|
||||
"293": "\uf01a", //"LightRain",
|
||||
"296": "\uf01a", //"LightRain",
|
||||
"299": "\uf019", //"HeavyShowers",
|
||||
"302": "\uf019", //"HeavyRain",
|
||||
"305": "\uf019", //"HeavyShowers",
|
||||
"308": "\uf019", //"HeavyRain",
|
||||
"311": "\uf0b5", //"LightSleet",
|
||||
"314": "\uf0b5", //"LightSleet",
|
||||
"317": "\uf0b5", //"LightSleet",
|
||||
"320": "\uf01b", //"LightSnow",
|
||||
"323": "\uf017", //"LightSnowShowers",
|
||||
"326": "\uf017", //"LightSnowShowers",
|
||||
"329": "\uf01b", //"HeavySnow",
|
||||
"332": "\uf01b", //"HeavySnow",
|
||||
"335": "\uf01b", //"HeavySnowShowers",
|
||||
"338": "\uf01b", //"HeavySnow",
|
||||
"350": "\uf0b5", //"LightSleet",
|
||||
"353": "\uf01a", //"LightShowers",
|
||||
"356": "\uf019", //"HeavyShowers",
|
||||
"359": "\uf019", //"HeavyRain",
|
||||
"362": "\uf017", //"LightSleetShowers",
|
||||
"365": "\uf017", //"LightSleetShowers",
|
||||
"368": "\uf017", //"LightSnowShowers",
|
||||
"371": "\uf017", //"HeavySnowShowers",
|
||||
"374": "\uf0b5", //"LightSleetShowers",
|
||||
"377": "\uf0b5", //"LightSleet",
|
||||
"386": "\uf01e", //"ThunderyShowers",
|
||||
"389": "\uf01e", //"ThunderyHeavyRain",
|
||||
"392": "\uf01e", //"ThunderySnowShowers",
|
||||
"395": "\uf01b", //"HeavySnowShowers",
|
||||
asusctl: {
|
||||
profile: {
|
||||
Balanced: "power-profile-balanced-symbolic",
|
||||
Quiet: "power-profile-power-saver-symbolic",
|
||||
Performance: "power-profile-performance-symbolic",
|
||||
},
|
||||
mode: {
|
||||
Integrated: "processor-symbolic",
|
||||
Hybrid: "controller-symbolic",
|
||||
},
|
||||
},
|
||||
night: {
|
||||
"113": "\uf02e", // Night
|
||||
"116": "\uf086", // Partly cloudy, night
|
||||
"119": "\uf086", // Partly cloudy, night
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
battery: {
|
||||
charging: "battery-flash-symbolic",
|
||||
warning: "battery-empty-symbolic",
|
||||
},
|
||||
bluetooth: {
|
||||
enabled: "bluetooth-active-symbolic",
|
||||
disabled: "bluetooth-disabled-symbolic",
|
||||
},
|
||||
brightness: {
|
||||
indicator: "display-brightness-symbolic",
|
||||
keyboard: "keyboard-brightness-symbolic",
|
||||
screen: "display-brightness-symbolic",
|
||||
},
|
||||
powermenu: {
|
||||
sleep: "weather-clear-night-symbolic",
|
||||
reboot: "system-reboot-symbolic",
|
||||
logout: "system-log-out-symbolic",
|
||||
shutdown: "system-shutdown-symbolic",
|
||||
},
|
||||
recorder: {
|
||||
recording: "media-record-symbolic",
|
||||
},
|
||||
notifications: {
|
||||
noisy: "org.gnome.Settings-notifications-symbolic",
|
||||
silent: "notifications-disabled-symbolic",
|
||||
message: "chat-bubbles-symbolic",
|
||||
},
|
||||
trash: {
|
||||
full: "user-trash-full-symbolic",
|
||||
empty: "user-trash-symbolic",
|
||||
},
|
||||
mpris: {
|
||||
shuffle: {
|
||||
enabled: "media-playlist-shuffle-symbolic",
|
||||
disabled: "media-playlist-consecutive-symbolic",
|
||||
},
|
||||
loop: {
|
||||
none: "media-playlist-repeat-symbolic",
|
||||
track: "media-playlist-repeat-song-symbolic",
|
||||
playlist: "media-playlist-repeat-symbolic",
|
||||
},
|
||||
playing: "media-playback-pause-symbolic",
|
||||
paused: "media-playback-start-symbolic",
|
||||
stopped: "media-playback-start-symbolic",
|
||||
prev: "media-skip-backward-symbolic",
|
||||
next: "media-skip-forward-symbolic",
|
||||
},
|
||||
system: {
|
||||
cpu: "org.gnome.SystemMonitor-symbolic",
|
||||
ram: "drive-harddisk-solidstate-symbolic",
|
||||
temp: "temperature-symbolic",
|
||||
},
|
||||
color: {
|
||||
dark: "dark-mode-symbolic",
|
||||
light: "light-mode-symbolic",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
const notifs = await Service.import("notifications");
|
||||
import icons from "../icons/index.js";
|
||||
|
||||
export default () => {
|
||||
notifs.popupTimeout = 7000;
|
||||
notifs.popupTimeout = 5000;
|
||||
|
||||
return Widget.Window({
|
||||
name: "notifications-window",
|
||||
class_name: "notifications-window",
|
||||
layer: "overlay",
|
||||
anchor: ["top","right"],
|
||||
layer: "top",
|
||||
anchor: ["top", "right"],
|
||||
monitor: 2,
|
||||
exclusivity: "ignore",
|
||||
child: Widget.Box({
|
||||
vertical: true,
|
||||
class_name: "notification-card-container",
|
||||
vertical: true,
|
||||
setup: (self) => {
|
||||
self.hook(notifs, () => {
|
||||
if (notifs.dnd) {
|
||||
return;
|
||||
return [];
|
||||
}
|
||||
|
||||
const imageContainer = (notif) => {
|
||||
@@ -70,55 +71,104 @@ export default () => {
|
||||
return [];
|
||||
};
|
||||
|
||||
const NotificationIcon = ({ app_entry, app_icon, app_name }) => {
|
||||
let icon = icons.fallback.notification;
|
||||
|
||||
if (
|
||||
Utils.lookUpIcon(app_name) ||
|
||||
Utils.lookUpIcon(app_name.toLowerCase() || "")
|
||||
)
|
||||
icon = Utils.lookUpIcon(app_name)
|
||||
? app_name
|
||||
: Utils.lookUpIcon(app_name.toLowerCase())
|
||||
? app_name.toLowerCase()
|
||||
: "";
|
||||
|
||||
if (Utils.lookUpIcon(app_icon) && icon === "") icon = app_icon;
|
||||
|
||||
if (Utils.lookUpIcon(app_entry || "") && icon === "")
|
||||
icon = app_entry || "";
|
||||
|
||||
return Widget.Box({
|
||||
css: `
|
||||
min-width: 2rem;
|
||||
min-height: 2rem;
|
||||
`,
|
||||
child: Widget.Icon({
|
||||
class_name: "notification-icon",
|
||||
icon,
|
||||
}),
|
||||
});
|
||||
};
|
||||
|
||||
return (self.children = notifs.popups.map((notif, index) => {
|
||||
// FIX: Bottom part of notification gets cut of... need to find and fix culprit
|
||||
return Widget.Box({
|
||||
class_name: "notification-card",
|
||||
vpack: "start",
|
||||
children: [
|
||||
...imageContainer(notif),
|
||||
Widget.Box({
|
||||
vpack: "start",
|
||||
vertical: true,
|
||||
class_name: "notification-card-content",
|
||||
children: [
|
||||
Widget.Box({
|
||||
class_name: "notification-card-header",
|
||||
vertical: false,
|
||||
children: [
|
||||
Widget.Label({
|
||||
class_name: "notification-card-header-label",
|
||||
truncate: "end",
|
||||
wrap: true,
|
||||
label: notif["summary"],
|
||||
Widget.Box({
|
||||
class_name: "notification-card-header",
|
||||
vpack: "start",
|
||||
children: [
|
||||
Widget.Label({
|
||||
class_name: "notification-card-header-label",
|
||||
vexpand: true,
|
||||
max_width_chars: 21,
|
||||
truncate: "end",
|
||||
wrap: true,
|
||||
label: notif["summary"],
|
||||
}),
|
||||
],
|
||||
}),
|
||||
Widget.Box({
|
||||
class_name: "notification-card-header",
|
||||
hexpand: true,
|
||||
hpack: "end",
|
||||
children: [NotificationIcon(notif)],
|
||||
}),
|
||||
],
|
||||
}),
|
||||
Widget.Box({
|
||||
vpack: "start",
|
||||
class_name: "notification-card-body",
|
||||
children: [
|
||||
Widget.Label({
|
||||
class_name: "notification-card-body-label",
|
||||
useMarkup: true,
|
||||
lines: 2,
|
||||
wrap: true,
|
||||
maxWidthChars: 30,
|
||||
hexpand: true,
|
||||
use_markup: true,
|
||||
xalign: 0,
|
||||
justification: "left",
|
||||
truncate: "end",
|
||||
lines: 2,
|
||||
max_width_chars: 25,
|
||||
wrap: true,
|
||||
class_name: "notification-card-body-label",
|
||||
label: notif["body"],
|
||||
}),
|
||||
],
|
||||
}),
|
||||
...actionsContainer(notif),
|
||||
Widget.Box({
|
||||
class_name: "notification-card-appname",
|
||||
children: [
|
||||
Widget.Label({
|
||||
class_name: "notification-card-appname-label",
|
||||
truncate: "end",
|
||||
wrap: true,
|
||||
label: notif["app-name"].toUpperCase(),
|
||||
}),
|
||||
],
|
||||
}),
|
||||
],
|
||||
}),
|
||||
Widget.Button({
|
||||
class_name: "close-notification-button",
|
||||
on_primary_click: () => {
|
||||
notifs.CloseNotification(notif.id);
|
||||
},
|
||||
child: Widget.Label({
|
||||
label: "",
|
||||
hpack: "center",
|
||||
}),
|
||||
}),
|
||||
],
|
||||
});
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user