First commit: Beta 25.04.04

This commit is contained in:
Gu://em_ 2025-04-04 16:51:00 +02:00
commit e6b08b867f
58 changed files with 4196 additions and 0 deletions

43
README.md Normal file
View file

@ -0,0 +1,43 @@
# Atlas Desktop installer
This project is an automated installer for the Atlas Desktop.
## Disclaimer
### ⚠ This is still a WIP project. Use at your own risk.
Some platforms may not yet be supported such as Nvidia graphic cards for which you'll have to install all the drivers yourself. Sadly I don't have any equipment to test that out.
Also you will very probably miss some software you're used to. I'll strongly recommend you to check the [Additionnal packages](https://hedgedoc.oblic-parallels.fr/s/JSR33pjd_#Additional-packages) section to know about some open source utilities that fit perfectly within the desktop.
More generally give a look to the (Quick start guide)[https://hedgedoc.oblic-parallels.fr/s/JSR33pjd_]
If something doesn't work or behaves anormally don't hesitate to contact me so that it will be fixed for future users.
## Requirements
You'll just need an already functional (even basic) **Arch Linux** system with `sudo` installed.
Setup will take care of configuring AppArmor and Zram if it hasn't been done yet.
## Usage
Very simple, clone the project (or download it directly from the web interface)
```sh=
git clone https://forge.oblic-parallels.fr/guillm/atlas-install
```
Make `setup.sh` executable
```sh=
chmod u+x setup.sh
```
And run it
```sh=
./setup.sh
```
That said I suggest you to give a look to the packages that will be installed on your system as it's important to know how things will work or to disable some things you wouldn't necessarely want.
## Future improvements
- Nvidia cards handling
- Cleaner way to enable/disable some packages / configuratuions

View file

@ -0,0 +1,72 @@
[General]
hotkey=Alt+Space
prioritizePerfectMatch=true
showTray=false
telemetry=false
[albert]
global_handler_enabled=false
trigger=albert
[applications]
enabled=true
fuzzy=true
terminal=kitty
use_generic_name=false
use_keywords=true
[caffeine]
enabled=false
[calculator_qalculate]
enabled=true
[clipboard]
enabled=true
persistent=true
[files]
enabled=false
paths=@Invalid()
[hash]
enabled=true
trigger=#
[mpris]
enabled=true
trigger=mp
[path]
enabled=true
[snippets]
enabled=false
[ssh]
enabled=true
[system]
command_lock=hyprlock
command_poweroff=poweroff
command_reboot=reboot
enabled=true
trigger=sys
[triggers]
trigger=?
[widgetsboxmodel]
alwaysOnTop=true
clearOnHide=false
clientShadow=false
darkTheme=Seventy Eight
displayScrollbar=false
followCursor=true
hideOnFocusLoss=true
historySearch=true
itemCount=5
lightTheme=Seventy Eight
quitOnClose=false
showCentered=true
systemShadow=true

View file

@ -0,0 +1,108 @@
/*
* original author: Manuel Schneider <https://github.com/ManuelSchneid3r>
* modified by : Gu://em_
*
* Check http://doc.qt.io/qt-5/stylesheet-syntax.html especially the subtopics:
* The Style Sheet Syntax (http://doc.qt.io/qt-5/stylesheet-syntax.html)
* Qt Style Sheets Reference (http://doc.qt.io/qt-5/stylesheet-reference.html)
*/
* {
border: none;
color: #98C1D9;
background-color: #293241;
}
#frame {
background-color: none;
border: none;
max-width:640px;
min-width:640px;
padding: 10px; /* to have a drag handle */
}
#inputLine {
border-radius: 8px;
border: 1px solid #4C566A;
color: #EE6C4D;
font-size: 26px;
padding: 8px;
selection-background-color: #EE6C4D;
selection-color: #E0FBFC;
}
#settingsButton {
background-color: none;
color: #4C566A;
max-height: 13px;
max-width: 13px;
min-height: 13px;
min-width: 13px;
padding: 16px;
}
QListView {
border-radius: 8px;
border: 1px solid #4C566A;
color: #E0FBFC;
margin-top: 4px;
selection-background-color: #3D5A80;
selection-color: #E0FBFC;
}
QListView::item {
border-radius: 6px;
padding: 4px;
}
QListView::item:selected {
background-color: #3D5A80;
}
QListView#resultsList {
font-size: 20px;
icon-size: 34px;
padding: 4px 8px 4px 8px;
}
QListView#resultsList::item {
margin: 4px 0px 4px 0px;
height: 44px;
}
QListView#actionList {
font-size: 16px;
padding: 6px 8px 6px 8px;
}
QListView#actionList::item {
margin: 2px 0px 2px 0px;
}
QListView QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical,
QListView QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical,
QListView QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
background: transparent;
border: 0px;
height: 0px;
width: 0px;
}
QListView QScrollBar:vertical {
background: transparent;
margin: 8px 0px 8px 0px;
width: 2px;
}
QListView QScrollBar::handle:vertical {
background: #4C566A;
min-height: 24px;
}

View file

@ -0,0 +1 @@
--enable-features=UseOzonePlatform --ozone-platform=wayland

View file

@ -0,0 +1,5 @@
Some((
red: 0.93333334,
green: 0.4235294,
blue: 0.30196077,
))

View file

@ -0,0 +1,6 @@
Some((
red: 0.11518643,
green: 0.14849715,
blue: 0.20401502,
alpha: 1.0,
))

View file

@ -0,0 +1,8 @@
(
radius_0: (0.0, 0.0, 0.0, 0.0),
radius_xs: (4.0, 4.0, 4.0, 4.0),
radius_s: (8.0, 8.0, 8.0, 8.0),
radius_m: (16.0, 16.0, 16.0, 16.0),
radius_l: (32.0, 32.0, 32.0, 32.0),
radius_xl: (160.0, 160.0, 160.0, 160.0),
)

View file

@ -0,0 +1 @@
(0, 8)

View file

@ -0,0 +1,12 @@
(
space_none: 0,
space_xxxs: 4,
space_xxs: 8,
space_xs: 12,
space_s: 16,
space_m: 24,
space_l: 32,
space_xl: 48,
space_xxl: 64,
space_xxxl: 128,
)

View file

@ -0,0 +1 @@
true

View file

@ -0,0 +1 @@
--enable-features=UseOzonePlatform --ozone-platform=wayland

View file

@ -0,0 +1,66 @@
# -*- conf -*-
# For documentation on these options, see `man fnott.ini`
# Global values
# output=<undefined>#
min-width=200
# max-width=0
# max-height=0
# stacking-order=bottom-up
anchor=top-right
edge-margin-vertical=10
edge-margin-horizontal=10
notification-margin=10
icon-theme=Papirus
# max-icon-size=32
# selection-helper=dmenu
# selection-helper-uses-null-separator=no
# play-sound=aplay ${filename}
# Default values, may be overridden in 'urgency' specific sections
layer=top
background=293241FF
border-color=EE6C4DFF
border-radius=0
border-size=2
padding-vertical=20
padding-horizontal=20
dpi-aware=yes
title-font=monospace
title-color=ffffffff
title-format=<i>%a%A</i>
summary-font=monospace
summary-color=ffffffff
summary-format=<b>%s</b>\n
body-font=monospace
body-color=ffffffff
body-format=%b
progress-bar-height=20
progress-bar-color=ffffffff
# sound-file=
# icon=
# Timeout values are in seconds. 0 to disable
max-timeout=0
default-timeout=0
idle-timeout=0
# [low]
# background=2b2b2bff
# title-color=888888ff
# summary-color=888888ff
# body-color=888888ff
# [normal]
# [critical]
# background=6c3333ff

View file

@ -0,0 +1,11 @@
[Filechooser Settings]
LocationMode=path-bar
ShowHidden=false
ShowSizeColumn=true
GeometryX=1183
GeometryY=269
GeometryWidth=537
GeometryHeight=542
SortColumn=name
SortOrder=ascending
StartupMode=recent

View file

@ -0,0 +1,17 @@
[Settings]
gtk-theme-name=adw-gtk3-dark
gtk-icon-theme-name=Papirus-Dark
gtk-font-name=DejaVu Sans 10
gtk-cursor-theme-name=VolantesCursors
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=0
gtk-menu-images=0
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=1

View file

@ -0,0 +1,166 @@
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hyprland.org/Configuring/Variables/
$active_color = rgba(98C1D9FF)
$inactive_color = rgba(595959aa)
# https://wiki.hyprland.org/Configuring/Variables/#general
general {
gaps_in = 1
gaps_out = 0
border_size = 1
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
col.active_border = $active_color
col.inactive_border = $inactive_color
# Resizing windows by clicking and dragging on borders and gaps
resize_on_border = true
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
allow_tearing = false
layout = dwindle
}
# https://wiki.hyprland.org/Configuring/Variables/#decoration
decoration {
rounding = 2
# Change transparency of focused and unfocused windows
active_opacity = 1.0
inactive_opacity = 1.0
shadow {
enabled = true
range = 4
render_power = 3
color = rgba(1a1a1aee)
}
# https://wiki.hyprland.org/Configuring/Variables/#blur
blur {
enabled = true
size = 6
passes = 3
vibrancy = 0.1696
}
}
# Apply blur to waybar
layerrule = blur,waybar
# https://wiki.hyprland.org/Configuring/Variables/#animations
animations {
enabled = yes, please :)
# See https://wiki.hyprland.org/Configuring/Animations/ for more
# Bezier curves
bezier = easeOutQuint,0.23,1,0.32,1
bezier = easeInOutCubic,0.65,0.05,0.36,1
bezier = linear,0,0,1,1
bezier = almostLinear,0.5,0.5,0.75,1.0
bezier = quick,0.15,0,0.1,1
bezier = easeInOutExpo,0.87,0,0.13,1
# Animations
animation = global, 1, 10, default
animation = border, 1, 5.39, easeOutQuint
animation = windows, 1, 3.79, easeOutQuint
animation = windowsIn, 1, 3.1, easeOutQuint, popin 87%
animation = windowsOut, 1, 1.49, linear, popin 87%
animation = fadeIn, 1, 1.73, almostLinear
animation = fadeOut, 1, 1.46, almostLinear
animation = fade, 1, 3.03, quick
animation = layers, 1, 3.81, easeOutQuint
animation = layersIn, 1, 4, easeOutQuint, fade
animation = layersOut, 1, 1.5, linear, fade
animation = fadeLayersIn, 1, 1.79, almostLinear
animation = fadeLayersOut, 1, 1.39, almostLinear
animation = workspaces, 1, 1.94, almostLinear, fade
animation = workspacesIn, 1, 3, easeOutQuint, slide
animation = workspacesOut, 1, 3, easeOutQuint, slide
#animation = workspacesIn, 1, 3, easeOutQuint, slidefade
#animation = workspacesOut, 1, 5, easeOutQuint, slidefade
}
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
# windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
master {
new_status = master
}
# https://wiki.hyprland.org/Configuring/Variables/#misc
misc {
force_default_wallpaper = 0 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true # If true disables the random hyprland logo / anime girl background. :(
disable_splash_rendering = true # Disable default wallpapers rendering
vfr = true # Lower sent frames when idle
}
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
# Albert
windowrule=noborder,class:^(albert)$
windowrule=noblur,class:^(albert)$
windowrule=noshadow,class:^(albert)$
windowrule=float,class:^(albert)$
windowrule=stayfocused,class:^(albert)$
windowrule=nodim,class:^(albert)$
# Prism Launcher
windowrule=pseudo, class:(org.prismlauncher.PrismLauncher)
windowrule=size 65% 70%, class:(org.prismlauncher.PrismLauncher), title:^(Prism Launcher .*)$
# TODO Automatically fullscreen single apps
# - Seems impossible for now (try mixing with workspace rules)
# Increase gaps for single apps
workspace=w[t1], gapsout:2

View file

@ -0,0 +1,63 @@
###################
### MY PROGRAMS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
# Set programs that you use
$terminal = kitty
#$fileManager = cosmic-files
$fileManager = nautilus
$menu = albert toggle
$notificationsManager = fnott
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
exec-once = ~/.config/hypr/scripts/autostart.sh
# Or execute your favorite apps at launch like this:
# exec-once = firefox
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hyprland.org/Configuring/Environment-variables/
# HyprCursor
env = HYPRCURSOR_THEME,VolantesCursors
env = XCURSOR_THEME,VolantesCursors
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
# XDG Desktop Portal
env = XDG_SESSION_DESKTOP,Hyprland
env = XDG_CURRENT_DESKTOP,Hyprland
# Experimental
# GTK
# env = GTK_USE_PORTAL,1
# env = GDK_SCALE,2 # Xwayland scale
# Qt
# env = QT_WAYLAND_DISABLE_WINDOWDECORATION,
# Firefox
# env = MOZ_ENABLE_WAYLAND,1
# env = MOZ_USE_XINPUT2,1
# WLRoots
# env = WLR_NO_HARDWARE_CURSORS,1
# env = WLR_RENDERER,vulkan
# SDL
# env = SDL_VIDEODRIVER,wayland
# Nvidia
# GBM backend
# env = GBM_BACKEND,nvidia-drm
# env = __GLX_VENDOR_LIBRARY_NAME,nvidia
# Hardware acceleration
# env = LIBVA_DRIVER_NAME,nvidia
# env = NVD_BACKEND,direct

View file

@ -0,0 +1,150 @@
#############
### INPUT ###
#############
### English configuration (not finished yet)
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
numlock_by_default = true
follow_mouse = 1
sensitivity = 0.1 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
disable_while_typing = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
workspace_swipe = true
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
# Main desktop controls
bind = $mainMod, Q, killactive,
bind = $mainMod, R, exec, $menu # Omnibar
bind = $mainMod, D, exec, $menu # Legacy menu shortcut
bind = $mainMod, L, exec, hyprlock # Lockscreen
bind = $mainMod, B, exec, ~/.config/hypr/scripts/toggle-waybar.sh # Toggle sidebar
bind = $mainMod SHIFT, R, exec, ~/.config/hypr/scripts/reload.sh # Reload desktop
bind = $mainMod, F11, exec, ~/.config/hypr/scripts/gamemode.sh # Gamemode
bind = $mainMod SHIFT, M, exit, # Exit desktop session
# Shortcuts
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, SPACE, exec, $terminal
bind = $mainMod, E, exec, $fileManager
bindel = , XF86Launch1, exec, kitty vim ~/.config/hypr/config
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Layout
bind = $mainMod, F, fullscreen,
bind = $mainMod, V, togglesplit, # Horizontal/vertical split
bind = $mainMod, T, togglefloating,
bind = $mainMod, H, pseudo, # Toggle pseudo-tiling
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, ampersand, workspace, 1
bind = $mainMod, eacute, workspace, 2
bind = $mainMod, quotedbl, workspace, 3
bind = $mainMod, apostrophe, workspace, 4
bind = $mainMod, parenleft, workspace, 5
bind = $mainMod, minus, workspace, 6
bind = $mainMod, egrave, workspace, 7
bind = $mainMod, underscore, workspace, 8
bind = $mainMod, ccedilla, workspace, 9
bind = $mainMod, agrave, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, ampersand, movetoworkspace, 1
bind = $mainMod SHIFT, eacute, movetoworkspace, 2
bind = $mainMod SHIFT, quotedbl, movetoworkspace, 3
bind = $mainMod SHIFT, apostrophe, movetoworkspace, 4
bind = $mainMod SHIFT, parenleft, movetoworkspace, 5
bind = $mainMod SHIFT, minus, movetoworkspace, 6
bind = $mainMod SHIFT, egrave, movetoworkspace, 7
bind = $mainMod SHIFT, underscore, movetoworkspace, 8
bind = $mainMod SHIFT, ccedilla, movetoworkspace, 9
bind = $mainMod SHIFT, agrave, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Minimize function (uses scratchpad)
# For testing, may be removed in future releases
bind = $mainMod, N, togglespecialworkspace, magic
bind = $mainMod, N, movetoworkspace, +0
bind = $mainMod, N, togglespecialworkspace, magic
bind = $mainMod, N, movetoworkspace, special:magic
bind = $mainMod, N, togglespecialworkspace, magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Function keys
## Volume
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
## Brightness
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 5%-
bindel = SHIFT, XF86MonBrightnessUp, exec, brightnessctl s 1%+
bindel = SHIFT, XF86MonBrightnessDown, exec, brightnessctl s 1%-
## Player controls
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
## Screenshot
bind = , Print, exec, ~/.config/hypr/scripts/screenshot.sh
## Touchpad toggle
### On galaxy books, pressing the disable touchpad key also triggers SUPER and
### CONTROL keys, this is why there are present here
bind = SUPER CONTROL, XF86TouchpadToggle, exec, ~/.config/hypr/scripts/toggle-touchpad.sh
## Testing
#bind = $mainMod, TAB, overview:toggle, toggle

View file

@ -0,0 +1,148 @@
#############
### INPUT ###
#############
# https://wiki.hyprland.org/Configuring/Variables/#input
input {
kb_layout = fr
kb_variant =
kb_model =
kb_options =
kb_rules =
numlock_by_default = true
follow_mouse = 1
sensitivity = 0.1 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = true
disable_while_typing = false
}
}
# https://wiki.hyprland.org/Configuring/Variables/#gestures
gestures {
workspace_swipe = true
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hyprland.org/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
# Main desktop controls
bind = $mainMod, Q, killactive,
bind = $mainMod, R, exec, $menu # Omnibar
bind = $mainMod, D, exec, $menu # Legacy menu shortcut
bind = $mainMod, L, exec, hyprlock # Lockscreen
bind = $mainMod, B, exec, ~/.config/hypr/scripts/toggle-waybar.sh # Toggle sidebar
bind = $mainMod SHIFT, R, exec, ~/.config/hypr/scripts/reload.sh # Reload desktop
bind = $mainMod, F11, exec, ~/.config/hypr/scripts/gamemode.sh # Gamemode
bind = $mainMod SHIFT, M, exit, # Exit desktop session
# Shortcuts
bind = $mainMod, RETURN, exec, $terminal
bind = $mainMod, SPACE, exec, $terminal
bind = $mainMod, E, exec, $fileManager
bindel = , XF86Launch1, exec, kitty vim ~/.config/hypr/config
# Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
# Layout
bind = $mainMod, F, fullscreen,
bind = $mainMod, V, togglesplit, # Horizontal/vertical split
bind = $mainMod, T, togglefloating,
bind = $mainMod, H, pseudo, # Toggle pseudo-tiling
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, ampersand, workspace, 1
bind = $mainMod, eacute, workspace, 2
bind = $mainMod, quotedbl, workspace, 3
bind = $mainMod, apostrophe, workspace, 4
bind = $mainMod, parenleft, workspace, 5
bind = $mainMod, minus, workspace, 6
bind = $mainMod, egrave, workspace, 7
bind = $mainMod, underscore, workspace, 8
bind = $mainMod, ccedilla, workspace, 9
bind = $mainMod, agrave, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, ampersand, movetoworkspace, 1
bind = $mainMod SHIFT, eacute, movetoworkspace, 2
bind = $mainMod SHIFT, quotedbl, movetoworkspace, 3
bind = $mainMod SHIFT, apostrophe, movetoworkspace, 4
bind = $mainMod SHIFT, parenleft, movetoworkspace, 5
bind = $mainMod SHIFT, minus, movetoworkspace, 6
bind = $mainMod SHIFT, egrave, movetoworkspace, 7
bind = $mainMod SHIFT, underscore, movetoworkspace, 8
bind = $mainMod SHIFT, ccedilla, movetoworkspace, 9
bind = $mainMod SHIFT, agrave, movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Minimize function (uses scratchpad)
# For testing, may be removed in future releases
bind = $mainMod, N, togglespecialworkspace, magic
bind = $mainMod, N, movetoworkspace, +0
bind = $mainMod, N, togglespecialworkspace, magic
bind = $mainMod, N, movetoworkspace, special:magic
bind = $mainMod, N, togglespecialworkspace, magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Function keys
## Volume
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
## Brightness
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 5%-
bindel = SHIFT, XF86MonBrightnessUp, exec, brightnessctl s 1%+
bindel = SHIFT, XF86MonBrightnessDown, exec, brightnessctl s 1%-
## Player controls
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
## Screenshot
bind = , Print, exec, ~/.config/hypr/scripts/screenshot.sh
## Touchpad toggle
### On galaxy books, pressing the disable touchpad key also triggers SUPER and
### CONTROL keys, this is why there are present here
bind = SUPER CONTROL, XF86TouchpadToggle, exec, ~/.config/hypr/scripts/toggle-touchpad.sh
## Testing
#bind = $mainMod, TAB, overview:toggle, toggle

View file

@ -0,0 +1,20 @@
# Mod config file to make the desktop more minimalist
general {
gaps_in = 0
gaps_out = 0
}
decoration {
rounding = 0
shadow {
enabled = false
}
}
animations {
enabled = false
}

View file

@ -0,0 +1,10 @@
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto
monitor=eDP-1,preferred,0x0,1 # Laptop screen
monitor=DP-1, preferred, 0x-1080, 1 # HP Home monitor
monitor=DP-2, preferred, 0x-1080, 1 # HP Home monitor
monitor=HDMI-A-1, preferred, 0x-1440, 1 # Dell monitor

View file

@ -0,0 +1,7 @@
################
### MONITORS ###
################
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=,preferred,auto,auto
monitor=eDP-1,preferred,0x0,1 # Laptop screen

View file

@ -0,0 +1,12 @@
# Plugins settings
plugin {
overview {
# disableGestures = true
reverseSwipe = true
overrideGaps = true
gapsIn = 10
gapsOut = 20
}
}

View file

@ -0,0 +1,14 @@
# Config is based on the example Hyprland config file provided on the project's repo.
# Refer to the wiki for more information.
# https://wiki.hyprland.org/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#source = ~/.config/hypr/config/monitors_default.conf
source = ~/.config/hypr/config/monitors.conf
source = ~/.config/hypr/config/environment.conf
source = ~/.config/hypr/config/input.conf
source = ~/.config/hypr/config/appearance.conf
source = ~/.config/hypr/config/plugins.conf
#source = ~/.config/hypr/config/minimalist-mod.conf

View file

@ -0,0 +1,107 @@
# BACKGROUND
background {
monitor =
path = ~/.config/hypr/images/lockscreen.jpg
blur_passes = 0
#contrast = 0.8916
#brightness = 0.8172
#vibrancy = 0.1696
#vibrancy_darkness = 0.0
}
# GENERAL
general {
no_fade_in = false
grace = 0
disable_loading_bar = false
no_cursor = true
enable_fingerprint = true
}
# INPUT FIELD
input-field {
monitor =
size = 320, 55
outline_thickness = -1
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(200, 200, 200, 0.4)
inner_color = rgba(100, 114, 125, 0.4)
font_color = rgb(200, 200, 200)
fade_on_empty = false
font_family = DejaVu Sans
placeholder_text = <i><span foreground="##ffffff99">Enter Pass</span></i>
hide_input = false
position = 0, -350
halign = center
valign = center
}
# Time
label {
monitor =
#text = cmd[update:1000] echo "<span>$(date +"%H:%M")</span>"
text = $TIME
color = rgba(216, 222, 233, 1)
font_size = 130
font_family = JetbrainsMonoNL NF Bold
position = 0, 280
halign = center
valign = center
# TODO make shadowing work
#shadow_passes = 10
#shadow_size = 3
}
# Day-Month-Date
label {
monitor =
text = cmd[update:1000] echo -e "$(date +"%A, %d %B")"
color = rgba(216, 222, 233, 1)
font_size = 26
font_family = JetbrainsMonoNL NF
position = 0, 160
halign = center
valign = center
}
# Profie-Photo
#image {
# monitor =
# path = ~/.config/hypr/images/profile.png
# border_color = 0xffdddddd
# border_size = 0
# size = 120
# rounding = -1
# rotate = 0
# reload_time = -1
# reload_cmd =
# position = 0, -100
# halign = center
# valign = center
#}
# USER
#label {
# monitor =
# text = Hi, Guillem #$USER
# color = rgba(216, 222, 233, 0.70)
# font_size = 20
# font_family = DejaVu Sans
# position = 0, -200
# halign = center
# valign = center
#}
# CURRENT SONG
label {
monitor =
text = cmd[update:1000] echo "$(~/.config/hypr/scripts/songdetails.sh)"
color = rgba(255, 255, 255, 0.7)
font_size = 16
font_family = DejaVu Sans
position = 0, 20
halign = center
valign = bottom
}

View file

@ -0,0 +1,2 @@
preload = ~/.config/hypr/images/wallpaper.png
wallpaper = , ~/.config/hypr/images/wallpaper.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 MiB

View file

@ -0,0 +1,12 @@
#!/bin/sh
# This script is launched on every hyprland startup
# Please note that it is intended for desktop related programs ONLY, as it will be called every time you reload the desktop
# If you want to add your own applications you may rather want to use exec-once in the environment.conf file
hyprpaper &
hyprpm reload -nn &
albert &
# mako &
systemctl --user start hyprpolkitagent &
~/.config/hypr/scripts/restore-waybar.sh

View file

@ -0,0 +1,22 @@
#!/usr/bin/env sh
# From Hyprland documentation - https://wiki.hyprland.org/0.41.2/Configuring/Uncommon-tips--tricks/#toggle-animationsbluretc-hotkey
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
if [ "$HYPRGAMEMODE" = 1 ] ; then
hyprctl --batch "\
keyword animations:enabled 0;\
keyword decoration:drop_shadow 0;\
keyword decoration:blur:enabled 0;\
keyword general:gaps_in 0;\
keyword general:gaps_out 0;\
keyword general:border_size 1;\
keyword decoration:rounding 0"
killall waybar
hyprctl notify 1 2000 0 "Enabled game mode"
exit
fi
hyprctl reload
~/.config/hypr/scripts/restore-waybar.sh
hyprctl notify 1 2000 0 "Disabled game mode"

View file

@ -0,0 +1,9 @@
killall albert
killall hyprpaper
killall waybar
hyprctl reload
~/.config/hypr/scripts/autostart.sh
hyprctl notify 1 2000 0 Desktop reloaded

View file

@ -0,0 +1,10 @@
#!/bin/sh
# Launch waybar depending on the last status
waybar_status=~/.config/hypr/status/waybar
if [ "$(cat $waybar_status)" == "on" ]; then
killall waybar
waybar &
elif [ "$(cat $waybar_status)" != "off" ]; then
hyprctl notify 0 3000 0 Failed to retrieve waybar status
fi

View file

@ -0,0 +1 @@
grim -g "$(slurp)" $HOME/Pictures/Screenshots/$(date +'%F_%T.png') && hyprctl notify 1 2000 0 Screenshot saved!

View file

@ -0,0 +1,2 @@
song_info=$(playerctl metadata --format '{{title}} 󰎆 {{artist}}')
echo "$song_info"

View file

@ -0,0 +1,35 @@
#!/bin/sh
device=znt0001:00-14e5:650e-touchpad
toggle_variable="device[${device}]:enabled"
hyprctl keyword "${toggle_variable}" true
status_file="$HOME/.config/hypr/status/touchpad"
enable_touchpad() {
printf "on" > "${status_file}"
hyprctl notify 1 2000 0 "Enabled touchpad"
hyprctl keyword "${toggle_variable}" true
}
disable_touchpad() {
printf "off" > "${status_file}"
hyprctl notify 0 2000 0 "Disabled Touchpad"
hyprctl keyword "${toggle_variable}" false
}
if ! [ -f "${status_file}" ]; then
hyprctl notify 3 3000 0 "Status file missing"
enable_touchpad
else
if [ $(cat "${status_file}") = "on" ]; then
disable_touchpad
elif [ $(cat "${status_file}") = "off" ]; then
enable_touchpad
fi
fi

View file

@ -0,0 +1,11 @@
#!/bin/sh
pidof waybar # Check if waybar is running
if [ $? = 0 ]; then
# If running, stop it
killall waybar & echo "off" > ~/.config/hypr/status/waybar
else
# Else, run it
waybar & echo "on" > ~/.config/hypr/status/waybar
fi

View file

@ -0,0 +1 @@
on

View file

@ -0,0 +1,61 @@
# vim:ft=kitty
## name: GitHub Dark
## author: GitHub
## license: MIT
#: The basic colors
foreground #c9d1d9
background #0d1117
selection_foreground #0d1117
selection_background #58a6ff
#: Cursor colors
cursor #58a6ff
#: Tab bar colors
tab_bar_background #010409
active_tab_foreground #c9d1d9
active_tab_background #0d1117
inactive_tab_foreground #8b949e
inactive_tab_background #010409
#: The basic 16 colors
#: black
color0 #484f58
color8 #6e7681
#: red
color1 #ff7b72
color9 #ffa198
#: green
color2 #3fb950
color10 #56d364
#: yellow
color3 #d29922
color11 #e3b341
#: blue
color4 #58a6ff
color12 #79c0ff
#: magenta
color5 #bc8cff
color13 #d2a8ff
#: cyan
color6 #39c5cf
color14 #56d4dd
#: white
color7 #b1bac4
color15 #ffffff

View file

@ -0,0 +1,21 @@
## Fonts
font_family family="JetBrainsMonoNL Nerd Font Mono"
font_size 13.0
bold_font auto
italic_font auto
bold_italic_font auto
## Theme
## GitHub Dark
# include github-dark.conf
## Seventy Eight
include seventy-eight.conf
## Blurred background
# background_opacity 0.6
## Decent scrolling speed
touch_scroll_multiplier 5.0
## Annoying bell sound
enable_audio_bell no

View file

@ -0,0 +1,61 @@
# vim:ft=kitty
## name: 78
## author: Gu://em_ (forked from Github Dark)
## license: MIT
#: The basic colors
foreground #c9d1d9
background #0f131a
selection_foreground #EE6C4D
selection_background #3D5A80
#: Cursor colors
cursor #E0FBFC
#: Tab bar colors
tab_bar_background #010409
active_tab_foreground #c9d1d9
active_tab_background #0d1117
inactive_tab_foreground #8b949e
inactive_tab_background #010409
#: The basic 16 colors
#: black
color0 #484f58
color8 #6e7681
#: red
color1 #EE6C4D
color9 #F5877A
#: green
color2 #3fb950
color10 #56d364
#: yellow
color3 #d29922
color11 #e3b341
#: blue
color4 #58a6ff
color12 #79c0ff
#: magenta
color5 #bc8cff
color13 #d2a8ff
#: cyan
color6 #39c5cf
color14 #56d4dd
#: white
color7 #b1bac4
color15 #ffffff

View file

@ -0,0 +1,4 @@
@define-color foreground #c5c5c5;
@define-color background #18191c;
@define-color accentColor #b6c8d3;

View file

@ -0,0 +1,478 @@
{
"layer": "top",
"position": "left",
"margin": "1 1 1 1",
"reload_style_on_change": true,
"modules-left": [
//"custom/updates",
"hyprland/workspaces",
"hyprland/submap"
//"group/info",
//"hyprland/window"
],
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate",
"all-outputs": true,
"format-icons": {
"1": "1",
"2": "2",
"3": "3",
"4": "4",
"5": "5",
"6": "6",
"7": "7",
"8": "8",
"9": "9",
"10": "10"
}
},
"hyprland/window": {
"format":"",
"spearate-outputs": true,
"icon": true
},
"hyprland/submap": {
"format": "<b>󰇘</b>",
"max-length": 8,
"tooltip": true
},
"group/info": {
"orientation": "inherit",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false
},
"modules": [
"custom/dmark",
"group/gcpu",
"memory",
"disk"
]
},
"custom/dmark": {
"format": "",
"tooltip": false
},
"group/gcpu": {
"orientation": "inherit",
"modules": [
"custom/cpu-icon",
"custom/cputemp",
"cpu"
]
},
"custom/cpu-icon": {
"format": "󰻠",
"tooltip": false
},
"custom/cputemp": {
"format": "{}",
"exec": "~/.config/waybar/bin/cputemp",
"interval": 10,
"return-type": "json"
},
"cpu": {
"format": "<b>{usage}󱉸</b>",
"on-click": "foot btop"
},
"memory": {
"format": "<b>  \n{:2}󱉸</b>"
},
"disk": {
"interval": 600,
"format": "<b> 󰋊 \n{percentage_used}󱉸</b>",
"path": "/"
},
"modules-right": [
"custom/recorder",
"privacy",
"group/brightness",
"group/sound",
"group/connection",
"tray",
"group/together",
//"group/cnoti",
"group/power"
],
"custom/recorder": {
"format": "{}",
"interval": "once",
"exec": "echo ''",
"tooltip": "false",
"exec-if": "pgrep 'wl-screenrec'",
"on-click": "recorder",
"signal": 4
},
"privacy": {
"orientation": "vertical",
"icon-spacing": 4,
"icon-size": 14,
"transition-duration": 250,
"modules": [
{
"type": "screenshare",
"tooltip": true,
"tooltip-icon-size": 24
}
]
},
"group/brightness": {
"orientation": "inherit",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false
},
"modules": [
"backlight"
//"backlight/slider"
]
},
"backlight": {
"device": "intel_backlight",
"format": "{icon}",
"format-icons": [
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
],
"on-scroll-down": "brightnessctl s 5%-",
"on-scroll-up": "brightnessctl s +5%",
"tooltip": true,
"tooltip-format": "Brightness: {percent}% ",
"smooth-scrolling-threshold": 1
},
"backlight/slider": {
"min": 1,
"max": 100,
"orientation": "vertical",
"device": "intel_backlight"
},
"group/sound": {
"orientation": "inherit",
"modules": [
"group/audio",
"custom/notifications"
]
},
"group/audio": {
"orientation": "inherit",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false
},
"modules": [
"pulseaudio",
"pulseaudio#mic",
"pulseaudio/slider"
]
},
"group/cnoti": {
"orientation": "inherit",
"modules": [
"custom/github"
]
},
"group/connection": {
"orientation": "inherit",
"modules": [
//"custom/vpn",
"custom/hotspot",
"group/network"
//"group/bluetooth"
]
},
"group/together": {
"orientation": "inherit",
"modules": [
"group/utils",
"clock"
]
},
"group/utils": {
"orientation": "inherit",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true
},
"modules": [
"custom/mark",
"custom/weather",
"custom/colorpicker",
"custom/hyprshade",
"idle_inhibitor",
"custom/hyprkill"
]
},
"group/network": {
"orientation": "inherit",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false
},
"modules": [
"network",
"network#speed"
]
},
"group/bluetooth": {
"orientation": "inherit",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true
},
"modules": [
"bluetooth",
"bluetooth#status"
]
},
"group/power": {
"orientation": "inherit",
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false
},
"modules": [
"battery",
"power-profiles-daemon"
]
},
"tray": {
"icon-size": 18,
"spacing": 10
},
"pulseaudio": {
"format": "{icon}",
"format-bluetooth": "{icon}",
"tooltip-format": "{volume}% {icon} | {desc}",
"format-muted": "󰖁",
"format-icons": {
"headphones": "",
"handsfree": "󱡏",
"headset": "",
"phone": "",
"portable": "",
"car": " ",
"default": [
"󰕿",
"󰖀",
"󰕾"
]
},
"on-click": "volume mute",
//"on-click-middle": "pavucontrol",
"on-scroll-up": "wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+",
"on-scroll-down": "wpctl set-volume @DEFAULT_AUDIO_SINK@ -5%",
"smooth-scrolling-threshold": 1
},
"pulseaudio#mic": {
"format": "{format_source}",
"format-source": "󰍬",
"format-source-muted": "󰍭",
"tooltip-format": "{volume}% {format_source} ",
"on-click": "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle",
"on-scroll-down": "wpctl set-volume @DEFAULT_SOURCE@ 5%-",
"on-scroll-up": "wpctl set-volume -l 1 @DEFAULT_SOURCE@ 5%+"
},
"pulseaudio/slider": {
"min": 0,
"max": 100,
"orientation": "vertical"
},
"network": {
"format": "{icon}",
"format-icons": {
"wifi": [
"󰤨"
],
"ethernet": [
""
],
"disconnected": [
"󰤮"
]
},
"format-wifi": "󰤨",
"format-ethernet": "",
"format-disconnected": "󰤮",
"format-linked": "󰈁",
"tooltip": false,
//"on-click": "pgrep -x rofi &>/dev/null && notify-send rofi || networkmanager_dmenu"
"on-click": "kitty nmtui"
},
"network#speed": {
"format": " {bandwidthDownBits} ",
"rotate": 90,
"interval": 5,
"tooltip-format": "{ipaddr}",
"tooltip-format-wifi": "{essid} ({signalStrength}%)  \n{ipaddr} | {frequency} MHz{icon} ",
"tooltip-format-ethernet": "{ifname} 󰈀 \n{ipaddr} | {frequency} MHz{icon} ",
"tooltip-format-disconnected": "Not Connected to any type of Network",
"tooltip": true,
"on-click": "pgrep -x rofi &>/dev/null && notify-send rofi || networkmanager_dmenu"
},
"bluetooth": {
"format-on": "󰂯",
"format-off": "󰂲",
"format-disabled": "",
"format-connected": "<b>󰂱</b>",
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
//"on-click": "rofi-bluetooth -config ~/.config/rofi/menu.d/network.rasi -i"
"on-click": "toggle-bluetooth"
},
"bluetooth#status": {
"format-on": "",
"format-off": "",
"format-disabled": "",
"format-connected": "<b>{num_connections}</b>",
"format-connected-battery": "<small><b>{device_battery_percentage}%</b></small>",
"tooltip-format": "{controller_alias}\t{controller_address}\n\n{num_connections} connected",
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{num_connections} connected\n\n{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
"tooltip-format-enumerate-connected-battery": "{device_alias}\t{device_address}\t{device_battery_percentage}%",
"on-click": "rofi-bluetooth -config ~/.config/rofi/menu.d/network.rasi -i"
},
"battery": {
"rotate": 270,
"states": {
"good": 95,
"warning": 16,
"critical": 8
},
"format": "{icon}",
"interval": 1,
"format-charging": "<b>{icon} </b>",
"format-full": "<span color='#82A55F'><b>{icon}</b></span>",
"format-icons": [
"󰁻",
"󰁼",
"󰁾",
"󰂀",
"󰂂",
"󰁹"
],
"tooltip-format": "{timeTo} {capacity} % | {power} W"
},
"clock": {
"format": "{:%H\n%M}",
"tooltip-format": "<tt><small>{calendar}</small></tt>",
"calendar": {
"mode": "month",
"mode-mon-col": 3,
"weeks-pos": "right",
"on-scroll": 1,
"on-click-right": "mode",
"format": {
"today": "<span color='#a6e3a1'><b><u>{}</u></b></span>"
}
}
},
"power-profiles-daemon": {
"format": "{icon}",
"tooltip-format": "Power profile: {profile}\nDriver: {driver}",
"tooltip": true,
"format-icons": {
"default": "",
"performance": "<span color='#B37F34'><small></small></span>",
"balanced": "<span><small> </small></span>",
"power-saver": "<span color='#a6e3a1'><small></small></span>"
}
},
"custom/hyprshade": {
"format": "{}",
"tooltip": true,
"signal": 11,
"exec": "toggle-hyprshade status",
"on-click": "toggle-hyprshade",
"return-type": "json"
},
"custom/weather": {
"format": "{}",
"tooltip": true,
"interval": 3600,
"exec": "wttrbar --custom-indicator '{ICON}\n<b>{temp_C}</b>' --location noida",
"return-type": "json"
},
"custom/updates": {
"format": "{}",
"interval": 10800,
"exec": "~/.config/waybar/bin/updatecheck",
"return-type": "json",
"exec-if": "exit 0",
"signal": 8
},
"custom/vpn": {
"format": "{} ",
"exec": "~/.config/waybar/bin/vpn",
"return-type": "json",
"interval": 5
},
"custom/hotspot": {
"format": "{} ",
"exec": "~/.config/waybar/bin/hotspot",
"return-type": "json",
"on-click": "hash wihotspot && wihotspot",
"interval": 5
},
"custom/mark": {
"format": "",
"tooltip": false
},
"custom/colorpicker": {
"format": "{}",
"return-type": "json",
"interval": "once",
"exec": "colorpicker -j",
"on-click": "sleep 1 && colorpicker",
"signal": 1
},
"custom/hyprkill": {
"format": "{}",
"interval": "once",
"exec": "echo '󰱝\nKill clients using hyrpctl kill'",
"on-click": "sleep 1 && hyprctl kill"
},
"custom/notifications": {
"format": "<b>{}</b> ",
"exec": "noti-cycle -j",
"on-click": "noti-cycle",
"on-click-right": "noti-cycle rofi",
"return-type": "json",
"interval": "once",
"signal": 2
},
"custom/github": {
"format": "{}",
"return-type": "json",
"interval": 3600,
"signal": 9,
"exec": "$HOME/.config/waybar/bin/github.sh",
"on-click": "xdg-open https://github.com/notifications;pkill -RTMIN+9 waybar"
},
"idle_inhibitor": {
"format": "{icon}",
"tooltip-format-activated": "Idle Inhibitor is active",
"tooltip-format-deactivated": "Idle Inhibitor is not active",
"format-icons": {
"activated": "󰅶",
"deactivated": "󰾪"
}
}
}

View file

@ -0,0 +1,292 @@
@import "colors.css";
@define-color active @accentColor;
* {
font-size: 16px;
font-family: "JetBrainsMono Nerd Font,JetBrainsMono NF";
min-width: 8px;
min-height: 0px;
border: none;
border-radius: 0;
box-shadow: none;
text-shadow: none;
padding: 0px;
}
window#waybar {
transition-property: background-color;
transition-duration: 0.5s;
border-radius: 4px;
border: 1px solid alpha(@active, 0.2);
background: @background;
background: alpha(@background, 0.7);
color: lighter(@active);
}
menu,
tooltip {
border-radius: 2px;
padding: 2px;
border: 1px solid @active;
background: @background;
color: lighter(@active);
}
menu label,
tooltip label {
font-size: 14px;
color: lighter(@active);
}
#submap,
#tray>.needs-attention {
animation-name: blink-active;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
.modules-right {
margin: 0px 6px 4px 6px;
border-radius: 4px;
background: alpha(@background, 0);
color: lighter(@active);
}
.modules-left {
transition-property: background-color;
transition-duration: 0.5s;
margin: 6px 5px 6px 5px; /* Testing with 5 pixels on left/right */
border-radius: 4px;
background: alpha(@background, 0.5);
color: lighter(@active);
border: 1px solid alpha(@active, 0.1);
}
#gcpu,
#custom-github,
#memory,
#disk,
#together,
#submap,
#custom-weather,
#custom-recorder,
#connection,
#cnoti,
#brightness,
#power,
#custom-updates,
#tray,
/*#audio,*/ /* Duplicate with #sound */
#sound,
#privacy { /*Controls all the right modules for some reason*/
border-radius: 2px;
margin: 2px 1px 3px 1px;
background: alpha(darker(@active), 0.3);
border: 1px solid alpha(darker(@active), 0.2);
}
/* Override specific parameters*/
#brightness,
#sound {
padding: 1px 0px;
}
#custom-notifications {
padding-left: 4px;
}
#custom-hotspot,
#custom-github,
#custom-notifications {
font-size: 14px;
}
#custom-hotspot {
padding-right: 2px;
}
#custom-vpn,
#custom-hotspot {
background: alpha(darker(@active), 0.3);
}
#privacy-item {
padding: 6px 0px 6px 6px;
}
#gcpu {
padding: 8px 0px 8px 0px;
}
#custom-cpu-icon {
font-size: 25px;
}
#custom-cputemp,
#disk,
#memory,
#cpu {
font-size: 14px;
font-weight: bold;
}
#custom-github {
padding-top: 2px;
padding-right: 4px;
}
#custom-dmark {
color: alpha(@foreground, 0.3);
}
#submap {
margin-bottom: 0px;
}
#workspaces {
margin: 0px 2px;
padding: 2px 0px;
border-radius: 8px;
}
#workspaces button {
transition-property: background-color;
transition-duration: 0.1s;
color: @foreground;
background: transparent;
border-radius: 4px;
color: alpha(@foreground, 0.3);
padding: 2px 0px;
}
#workspaces button.urgent {
font-weight: bold;
color: @foreground;
}
#workspaces button.active {
padding: 2px 0px;
background: alpha(@active, 0.4);
color: lighter(@active);
border-radius: 2px;
}
#network.wifi {
padding-right: 5px;
margin: 2px 0px;
}
#network.disconnected {
padding-right: 5px;
margin: 2px 0px;
}
#network.ethernet {
padding-right: 3px;
margin: 2px 0px;
}
#submap {
min-width: 0px;
margin: 4px 6px 4px 6px;
}
#custom-weather,
#tray {
padding: 4px 0px 4px 0px;
}
#bluetooth {
padding-top: 2px;
}
#battery {
border-radius: 8px;
padding: 4px 0px;
margin: 4px 2px 4px 2px;
}
#battery.discharging.warning {
animation-name: blink-yellow;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.discharging.critical {
animation-name: blink-red;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#clock {
font-weight: bold;
padding: 4px 2px 2px 2px;
}
#pulseaudio.mic {
border-radius: 4px;
color: lighter(@active);
padding-left: 2px;
}
#backlight-slider slider,
#pulseaudio-slider slider {
background-color: transparent;
box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
margin-top: 4px;
min-width: 6px;
min-height: 60px;
border-radius: 8px;
background-color: alpha(@background, 0.6);
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
border-radius: 8px;
background-color: lighter(@active);
}
#bluetooth.discoverable,
#bluetooth.discovering,
#bluetooth.pairable {
border-radius: 8px;
animation-name: blink-active;
animation-duration: 1s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
@keyframes blink-active {
to {
background-color: @active;
color: @foreground;
}
}
@keyframes blink-red {
to {
background-color: #c64d4f;
color: @foreground;
}
}
@keyframes blink-yellow {
to {
background-color: #cf9022;
color: @foreground;
}
}

View file

@ -0,0 +1,17 @@
#!/bin/sh
if [ $(whoami) != root ]; then
echo "Please run this script as root"
echo "-> sudo $0"
echo
sudo $0
exit $?
fi
apps_path=/usr/share/applications
rm $apps_path/codium.desktop
sed -i "s/Name=VSCodium - Wayland/Name=VSCodium/g" $apps_path/codium-wayland.desktop
echo "- Done"
exit 0

View file

@ -0,0 +1,53 @@
#!/bin/sh
# Actually just a modified version of the set-wallpaper script, explaining some potential inconsistencies in variables naming or whatever else.
print_help() {
echo "Usage: $0 [input-file]"
echo
echo "Changes your current lockscreen wallpaper"
echo "Please note that this script is made to be used with the Atlas Desktop and will probably not work on most other desktops."
}
if [ $# -ne 1 ]; then
print_help
exit 1
fi
# Check if file exists
if [ -e "$1" ]; then
# Variables declaration
wallpaper_config=~/.config/hypr/hyprlock.conf
wallpaper_path=~/.config/hypr/images/lockscreen # Doesn't contain file extension
file_extension="${1##*.}"
# In case file has no extension
if [ "${file_extension}" == "$1" ]; then
echo "Error: please provide a file extension (ex: .jpg, .png...)"
exit 1
fi
# Remove old wallpaper
rm $wallpaper_path*
# Copy file
cp "$1" "${wallpaper_path}.${file_extension}"
if [ $? != 0 ]; then
echo "Aborted."
exit 1
fi
# Update config
sed -i "s/lockscreen\.[^[:space:]]*/lockscreen.$file_extension/g" $wallpaper_config # Replace current extension by new extension
if [ $? != 0 ]; then
echo "Aborted."
exit 1
fi
echo "Done"
exit 0
else
echo "Couldn't find '${1}': No such file or directory"
exit 1
fi

57
config/.local/bin/set-wallpaper Executable file
View file

@ -0,0 +1,57 @@
#!/bin/sh
print_help() {
echo "Usage: $0 [input-file]"
echo
echo "Changes your current wallpaper"
echo "Please note that this script is made to be used with the Atlas Desktop and will probably not work on most other desktops."
}
if [ $# -ne 1 ]; then
print_help
exit 1
fi
# Check if file exists
if [ -e "$1" ]; then
# Variables declaration
wallpaper_config=~/.config/hypr/hyprpaper.conf
wallpaper_path=~/.config/hypr/images/wallpaper # Doesn't contain file extension
file_extension="${1##*.}"
# In case file has no extension
if [ "${file_extension}" == "$1" ]; then
echo "Error: please provide a file extension (ex: .jpg, .png...)"
exit 1
fi
# Remove old wallpaper
rm $wallpaper_path*
# Copy file
cp "$1" "${wallpaper_path}.${file_extension}"
if [ $? != 0 ]; then
echo "Aborted."
exit 1
fi
# Update config
sed -i "s/wallpaper\.[^[:space:]]*/wallpaper.$file_extension/g" $wallpaper_config # Replace current extension by new extension
if [ $? != 0 ]; then
echo "Aborted."
exit 1
fi
# Reload Hyprpaper
pkill hyprpaper
hyprctl dispatch exec hyprpaper > /dev/null # Start hyprpaper and hide stdout output
# Or you can do the old fashioned way :
# nohup hyprpaper </dev/null >/dev/null 2>&1 &
echo "Done"
exit 0
else
echo "Couldn't find '${1}': No such file or directory"
exit 1
fi

1720
config/.p10k.zsh Normal file

File diff suppressed because it is too large Load diff

16
config/.vimrc Normal file
View file

@ -0,0 +1,16 @@
syntax on
filetype plugin indent on
set autoindent
set smartindent
set shiftwidth=4
set tabstop=4
set expandtab
set softtabstop=4
set relativenumber
set number
set showmatch
set cindent

100
config/.zshrc Normal file
View file

@ -0,0 +1,100 @@
# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi
# Set the directory where we want to store zinit and plugins
ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit/zinit.git"
# Download zinit if not present
if [ ! -d $ZINIT_HOME ]; then
mkdir -p "$(dirname $ZINIT_HOME)"
git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME"
fi
# Load zinit
source "${ZINIT_HOME}/zinit.zsh"
# Add in Powerlevel10k
zinit ice depth=1; zinit light romkatv/powerlevel10k
# Add in zsh plugins
zinit light zsh-users/zsh-syntax-highlighting
zinit light zsh-users/zsh-completions
zinit light zsh-users/zsh-autosuggestions
zinit light Aloxaf/fzf-tab
# Add in snippets (omz plugins)
zinit snippet OMZP::git
zinit snippet OMZP::archlinux
zinit snippet OMZP::sudo
#zinit snippet OMZP::command-not-found
#zinit snippet OMZP::kubectl
#zinit snippet OMZP::kubectx
# Load completions
autoload -U compinit && compinit
zinit cdreplay -q # Optimize cache (recommended by the zinit doc)
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh
# Keybindings
bindkey -e # Use emacs keybindings
bindkey '^p' history-search-backward
bindkey '^n' history-search-forward
bindkey '^[[3~' delete-char # Makes the delete key work properly
bindkey '^[[3;5~' kill-word # Makes the delete key work properly
# Missing ctrl+delete
bindkey "^[[1;5C" forward-word # Same with M-arrows
bindkey "^[[1;5D" backward-word
# History
HISTSIZE=5000
HISTFILE=~/.zsh_hist
SAVEHIST=$HISTSIZE
setopt appendhistory
setopt sharehistory
setopt hist_ignore_space
# The following lines concerns history duplicates
# They're disabled as I prefer having a real history of my commands
#HISTDUP=erase
#setopt hist_ignore_all_dups
#setopt hist_ignore_dups
#setopt hist_find_no_dups
# Completions styling
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' # Makes completions case insensitive
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" # Makes completions colored
zstyle ':completion:*' menu no # Hide the default completions menu (replaced by fzf)
zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath'
setopt correct # 'Did you mean'
# Environment variables
export PATH=$PATH:~/.local/bin
# Aliases
alias cl='clear'
alias hyprcfg='vim ~/.config/hypr/'
alias zcfg='vim ~/.zshrc'
alias icat='kitten icat'
# Power management
alias power-draw="cat /sys/class/power_supply/BAT1/current_now /sys/class/power_supply/BAT1/voltage_now | xargs | awk '{print \$1*\$2/1e12 \" W\"}\'"
alias battery='cat /sys/class/power_supply/BAT1/capacity'
# Override some default commands with more practical alternatives
alias ls='eza --icons=automatic --tree --level=1 --follow-symlinks --no-quotes'
alias lsa='ls -a'
alias lsl='eza --icons=automatic --long --header --group -M'
alias tree='ls --level=3'
# Keep default commands accessible
alias lsd='/usr/bin/ls --color'
# Random stuff
# ...
# Shell integrations
eval "$(fzf --zsh)"
eval "$(zoxide init --cmd cd zsh)" # Override cd with zoxide

1
packages/aur.pkgs Normal file
View file

@ -0,0 +1 @@
albert

View file

@ -0,0 +1,8 @@
base-devel
eza
fastfetch
fzf
git
gnome-keyring
openssh
zoxide

16
packages/core.pkgs Normal file
View file

@ -0,0 +1,16 @@
apparmor
vim
ufw
intel-ucode
sudo
grub
efibootmgr
os-prober
networkmanager
iwd
mandoc
man-pages
sof-firmware
zsh
htop
zram-generator

16
packages/desktop.pkgs Normal file
View file

@ -0,0 +1,16 @@
pipewire-jack
pipewire
wireplumber
pipewire-pulse
greetd-tuigreet
hypridle
hyprland
hyprlock
hyprpaper
hypr-qtutils
hyprpolkitagent
xdg-desktop-portal-hyprland
waybar
power-profiles-daemon
fnott
kitty

4
packages/fonts.pkgs Normal file
View file

@ -0,0 +1,4 @@
ttf-dejavu
ttf-jetbrains-mono-nerd
noto-fonts
noto-fonts-emoji

2
packages/intel.pkgs Normal file
View file

@ -0,0 +1,2 @@
intel-media-driver
intel-ucode

5
packages/theming.pkgs Normal file
View file

@ -0,0 +1,5 @@
papirus-icon-theme
breeze
breeze5
qt6ct
adw-gtk-theme

109
setup.sh Normal file
View file

@ -0,0 +1,109 @@
#!/bin/sh
version="Beta 25.04.04"
echo "Atlas Desktop Installer - ${version}\n"
# Definitions
## Vars
script_path=$PWD
pkgs_path="${script_path}/packages"
config_path="${script_path}/config"
CPU_vendor=$(lscpu | grep Vendor | awk '{print $NF}')
dotfiles_path="~/.dotfiles"
## Functions
function install() {
echo "Downloading $1 packages"
# sudo pacman -Syu --noconfirm --color auto $(cat $pkgs_path/$1.pkgs)
echo "Done"
}
function install-aur() {
echo "Downloading $1 packages"
# paru -Syu --noconfirm $(cat $pkgs_path/$1.pkgs)
echo "Done"
}
# Checks
## Sudo installed
pacman -Q sudo > /dev/null
if [ $? != 0 ]; then
echo "Please install 'sudo' first"
exit 1
fi
## Scripts presence
if [ ! -d $pkgs_path ]; then
echo "Couldn't find 'packages' folder inside ${script_path}"
exit 1
fi
if [ ! -d $config_path ]; then
echo "Couldn't find 'config' folder inside ${script_path}"
exit 1
fi
# Install packages
echo "--- Downloading packages ---"
##
install core
install cli-dev-tools
install fonts
install desktop
install theming
## Install vendor specific software
if [ $CPU_vendor == "Genuine Intel" ]; then
install intel
fi
## Install paru
git clone https://aur.archlinux.org/paru.git /tmp/paru &&
cd /tmp/paru &&
makepkg -si
cd $script_path
install-aur aur
# Configuration
## Dotfiles
cp $config_path $dotfiles_path &&
cd $dotfiles_path &&
stow .
cd $script_path
## Swap (Zram)
is_zram_active=$(sudo systemctl is-active systemd-zram-setup@zram0.service)
if [ is_zram_active != "active" ]; then
...
fi
## Mandatory Access Control (Apparmor)
is_aa_active=$(sudo systemctl is-active apparmor.service)
if [ is_aa_active != "active" ]; then
echo "========================================"
echo "WARNING: you don't have apparmor enabled"
echo "Since this script is not yet capable to handle kernel parameters, you'll have to do it yourself"
echo "Please refer to https://wiki.archlinux.org/title/AppArmor"
echo "========================================"
fi
## Display manager (Greetd)
sudo systemctl enable greetd
## Firewall (UFW)
sudo systemctl enable ufw
sudo ufw enable
# Finish
fastfetch
echo
echo "Installation finished"
echo "Please check the previous outputs for warnings"
echo "You can make final adjustements before rebooting"