2023-02-27 16:24:28 +01:00
# define WLR_USE_UNSTABLE
# include <unistd.h>
# include <any>
2023-04-27 00:44:12 +02:00
# include <hyprland/src/Compositor.hpp>
# include <hyprland/src/Window.hpp>
# include <hyprland/src/config/ConfigManager.hpp>
2023-02-27 16:24:28 +01:00
# include "borderDeco.hpp"
# include "globals.hpp"
// Do NOT change this function.
2023-02-28 13:06:21 +01:00
APICALL EXPORT std : : string PLUGIN_API_VERSION ( ) {
return HYPRLAND_API_VERSION ;
}
2023-02-27 16:24:28 +01:00
void onNewWindow ( void * self , std : : any data ) {
// data is guaranteed
auto * const PWINDOW = std : : any_cast < CWindow * > ( data ) ;
HyprlandAPI : : addWindowDecoration ( PHANDLE , PWINDOW , new CBordersPlusPlus ( PWINDOW ) ) ;
}
APICALL EXPORT PLUGIN_DESCRIPTION_INFO PLUGIN_INIT ( HANDLE handle ) {
PHANDLE = handle ;
2023-10-19 15:12:55 +02:00
const std : : string HASH = __hyprland_api_get_hash ( ) ;
if ( HASH ! = GIT_COMMIT_HASH ) {
HyprlandAPI : : addNotification ( PHANDLE , " [borders-plus-plus] Failure in initialization: Version mismatch (headers ver is not equal to running hyprland ver) " ,
CColor { 1.0 , 0.2 , 0.2 , 1.0 } , 5000 ) ;
throw std : : runtime_error ( " [bpp] Version mismatch " ) ;
}
2023-02-28 13:06:21 +01:00
HyprlandAPI : : addConfigValue ( PHANDLE , " plugin:borders-plus-plus:add_borders " , SConfigValue { . intValue = 1 } ) ;
2023-10-19 15:43:54 +02:00
HyprlandAPI : : addConfigValue ( PHANDLE , " plugin:borders-plus-plus:natural_rounding " , SConfigValue { . intValue = 1 } ) ;
for ( size_t i = 0 ; i < 9 ; + + i ) {
HyprlandAPI : : addConfigValue ( PHANDLE , " plugin:borders-plus-plus:col.border_ " + std : : to_string ( i + 1 ) , SConfigValue { . intValue = configStringToInt ( " rgba(000000ee) " ) } ) ;
HyprlandAPI : : addConfigValue ( PHANDLE , " plugin:borders-plus-plus:border_size_ " + std : : to_string ( i + 1 ) , SConfigValue { . intValue = - 1 } ) ;
}
2023-02-27 16:24:28 +01:00
2023-10-21 15:55:42 +02:00
HyprlandAPI : : registerCallbackDynamic ( PHANDLE , " openWindow " , [ & ] ( void * self , SCallbackInfo & info , std : : any data ) { onNewWindow ( self , data ) ; } ) ;
2023-02-27 16:24:28 +01:00
// add deco to existing windows
for ( auto & w : g_pCompositor - > m_vWindows ) {
if ( w - > isHidden ( ) | | ! w - > m_bIsMapped )
continue ;
HyprlandAPI : : addWindowDecoration ( PHANDLE , w . get ( ) , new CBordersPlusPlus ( w . get ( ) ) ) ;
}
HyprlandAPI : : reloadConfig ( ) ;
2023-02-28 13:06:21 +01:00
HyprlandAPI : : addNotification ( PHANDLE , " [borders-plus-plus] Initialized successfully! " , CColor { 0.2 , 1.0 , 0.2 , 1.0 } , 5000 ) ;
2023-02-27 16:24:28 +01:00
2023-02-28 13:06:21 +01:00
return { " borders-plus-plus " , " A plugin to add more borders to windows. " , " Vaxry " , " 1.0 " } ;
2023-02-27 16:24:28 +01:00
}
2023-02-28 13:06:21 +01:00
APICALL EXPORT void PLUGIN_EXIT ( ) {
;
}